打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
1亿条数据在PHP中实现Mysql数据库分表100张
userphoto

2013.01.22

关注
发布时间:2011.05.03 08:37      来源:赛迪网     作者:胡晓冬
【赛迪网讯】当数据量猛增的时候,大家都会选择库表散列等等方式去优化数据读写速度。笔者做了一个简单的尝试,1亿条数据,分100张表。具体实现过程如下。
首先创建100张表:
英文代码$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
函数如下:
英文代码$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数据了。
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
实例说明optimize table在优化mysql时很重要?海底苍鹰(tank)博客
MYSQL面试常考知识点总结
恕我直言,我怀疑你并不会“分库分表”
【MySQL进阶学习】优化索引与分区表
[MySQL]MySQL分区与传统的分库分表(精华)
35张图释放MySQL调优的最强连招,我先肝为敬
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服