文档章节

1亿条数据如何分表100张到Mysql数据库中(PHP)

zyt_1978
 zyt_1978
发布于 2016/07/06 20:03
字数 384
阅读 22
收藏 4

这篇文章主要介绍了当数据量猛增的时候如何把一亿条数据分表100张到Mysql数据库中,需要的朋友可以参考下

下面通过创建100张表来演示下1亿条数据的分表过程,具体请看下文代码。

当数据量猛增的时候,大家都会选择库表散列等等方式去优化数据读写速度。笔者做了一个简单的尝试,1亿条数据,分100张表。具体实现过程如下:

首先创建100张表:

?

1

2

3

4

5

6

7

8

9

10

$i=0;

while($i<=99){

echo "$newNumber \r\n";

$sql="CREATE TABLE `code_".$i."` (

`full_code` char(10) NOT NULL,

`create_time` int(10) unsigned NOT NULL,

PRIMARY KEY (`full_code`),

) ENGINE=MyISAM DEFAULT CHARSET=utf8";

mysql_query($sql);

$i++;

下面说一下我的分表规则,full_code作为主键,我们对full_code做hash

函数如下:

?

1

2

3

4

5

6

7

$table_name=get_hash_table('code',$full_code);

function get_hash_table($table,$code,$s=100){

$hash = sprintf("%u", crc32($code));

echo $hash;

$hash1 = intval(fmod($hash, $s));

return $table."_".$hash1;

}

这样插入数据前通过get_hash_table获取数据存放的表名。

最后我们使用merge存储引擎来实现一张完整的code表

?

1

2

3

4

5

CREATE TABLE IF NOT EXISTS `code` (

`full_code` char(10) NOT NULL,

`create_time` int(10) unsigned NOT NULL,

INDEX(full_code)

) TYPE=MERGE UNION=(code_0,code_1,code_2.......) INSERT_METHOD=LAST ;

这样我们通过select * from code就可以得到所有的full_code数据了。

以上介绍就是本文的全部内容,希望对大家有所帮助。

本文转载自:http://www.jb51.net/article/70265.htm

共有 人打赏支持
zyt_1978
粉丝 8
博文 166
码字总数 21058
作品 0
程序员
每天增加4亿条数据,每条数据200字节,要快速插入数据和快速查询,数据要保持一年

每天增加4亿条数据,每条数据200字节,要快速插入数据和快速查询,数据要保持一年,存储容量不需要考虑。 基于上次抛出该问题后得到大家很多良好的建议,我整理了大家的讨论,结合需求,我尝...

单车架构师
2013/07/22
710
3
数据库水平切分方法

在大中型项目中,在数据库设计的时候,考虑到数据库最大承受数据量,通常会把数据库或者数据表水平切分,以降低单个库,单个表的压力。我这里介绍两个我们项目中常用的数据表切分方法。当然这...

snowing1990
2016/03/18
62
0
mysql分表与分区表

一,什么是mysql分表,分区 什么是分表,从表面意思上看呢,就是把一张表分成N多个小表,具体请看mysql分表的3种方法 什么是分区,分区呢就是把一张表的数据分成N多个区块,这些区块可以在同...

JasonO
2016/01/27
16
0
MySQL分表的3种方法

MySQL分表的3种方法 标签:Mysql 一,先说一下为什么要分表 当一张的数据达到几百万时,你查询一次所花的时间会变多,如果有联合查询的话,我想有可能会死在那儿了。分表的目的就在于此,减小...

Lunaqi
2017/12/27
0
0
干货:数据库分库分表基础和实践

数据库架构的演变 在业务数据量比较少的时代,我们使用单机数据库就能满足业务使用,随着业务请求量越来越多,数据库中的数据量快速增加,这时单机数据库已经不能满足业务的性能要求,数据库...

中间件小哥
08/31
0
0

没有更多内容

加载失败,请刷新页面

加载更多

微信小程序页面栈管理

页面路由 在小程序中所有页面的路由全部由框架进行管理。 页面栈 框架以栈的形式维护了当前的所有页面。当发生路由切换的时候,页面栈的表现如下: 路由方式 页面栈表现 初始化 新页面入栈 ...

昙花一现
12分钟前
1
0
es6 let使用总结

中午偷个闲做个es6let的使用总结 作用域块 在作用域块中声明的变量不受外部的影响,见例子 {let a= 10;{let a= 20;console.log('子作用域', a);// 20}console.log('父作用域', a);// 10...

莫西摩西
14分钟前
0
0
ppwjs之bootstrap文字排版:排版常量

$bootstrap.字体.加粗类 = "font-weight-bold";$bootstrap.字体.普通类 = "font-weight-normal";$bootstrap.字体.纤细类 = "font-weight-light";$bootstrap.字体.斜体类 = "font-ital......

ppwjs
17分钟前
0
0
macOS Mojave 去除 Dock 栏最近打开的 App

升级 macOS Mojave 正式版后,每打开一个 App ,关闭后在 Dock 栏仍会保留下来,并与“钉”在 Dock 栏的那些常驻 App 以一个分割线隔开,这与 iPad 上类似,但是在 mac 下此功能显得十分别扭...

whoru
21分钟前
2
1
在Debian 9系统上安装Mysql数据库的方法教程

前言 看到题目大家应都会想,在 Debian 9 上安装 Mysql?那不是很简单的事儿吗?直接 sudo apt install mysql-server 不就行了吗? 没想到遇到了几个之前没遇到的问题,耽误了不少时间。 原来...

临江仙卜算子
今天
4
1

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部