设为首页
收藏本站
用户名
Email
自动登录
找回密码
密码
登录
立即注册
只需一步,快速开始
快捷导航
登录
注册
论坛首页
BBS
建站模版
微站设计
虚拟主机
企业邮箱
博客日志
Blog
搜索
搜索
搜索
热搜
长春
优惠
活动
做网站
本版
帖子
用户
本版
帖子
用户
请
登录
后使用快捷导航
没有帐号?
立即注册
道具
勋章
任务
留言板
设置
我的收藏
退出
时时商务社区
»
论坛首页
›
建站资源
›
建站技术
›
1亿条数据如何分表100张到Mysql数据库中(PHP) ...
返回列表
查看:
965
|
回复:
0
1亿条数据如何分表100张到Mysql数据库中(PHP)
[复制链接]
qz234
当前离线
积分
7694
2588
主题
2588
帖子
7694
积分
论坛元老
论坛元老, 积分 7694, 距离下一级还需 9992305 积分
论坛元老, 积分 7694, 距离下一级还需 9992305 积分
积分
7694
发消息
电梯直达
楼主
发表于 2018-2-14 05:43:30
|
只看该作者
|
正序浏览
|
阅读模式
下面通过创建100张表来演示下1亿条数据的分表过程,具体请看下文代码。
当数据量猛增的时候,大家都会选择库表散列等等方式去优化数据读写速度。笔者做了一个简单的尝试,1亿条数据,分100张表。具体实现过程如下:
首先创建100张表:
$i=0;
while($i
下面说一下我的分表规则,full_code作为主键,我们对full_code做hash
函数如下:
$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表
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
数据了。
以上介绍就是本文的全部内容,希望对大家有所帮助。
您可能感兴趣的文章:
MySQL 分表优化试验代码
MySQL动态创建表,数据分表的存储过程
使用MySQL的LAST_INSERT_ID来确定各分表的唯一ID值
MYSQL性能优化分享(分库分表)
MySQL分表实现上百万上千万记录分布存储的批量查询设计模式详解
mysql的3种分表方案
mysql分表和分区的区别浅析
php实现mysql数据库分表分段备份
Mysql数据库分库和分表方式(常用)
PHP操作mysql数据库分表的方法
MySQL分表自增ID问题的解决方法
MYSQL数据库数据拆分之分库分表总结
Mysql数据库性能优化三(分表、增量备份、还原)
什么是分表和分区 MySql数据库分区和分表方法
MyBatis实现Mysql数据库分库分表操作和总结(推荐)
MySQL 5.7双主同步部分表的实现过程详解
mysql数据库分表分库的策略
mysql分表分库的应用场景和设计方式
分享到:
QQ好友和群
QQ空间
腾讯微博
腾讯朋友
收藏
0
回复
使用道具
举报
返回列表
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
本版积分规则
发表回复
用户反馈
客户端