mysql千万级数据表,创建表及字段扩展的几条建议
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了mysql千万级数据表,创建表及字段扩展的几条建议,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2717字,纯文字阅读大概需要4分钟。
内容图文
TABLE chatmsg( cid bigint primary key, cMsgSendUserId bigint, cMsgReceiverUserId bigint, cTime bigint, cContent varchar(2000) not null default ‘‘, cExt varchar(5000) ) ENGINE=MYISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin PARTITION BY RANGE (cid) ( PARTITION p0 VALUES LESS THAN (1000000), PARTITION p1 VALUES LESS THAN (5000000), PARTITION p2 VALUES LESS THAN (1000000), PARTITION p3 VALUES LESS THAN MAXVALUE ) ; create index senduserid_index on chatmsg(cMsgSendUserId); create index receiverid_index on chatmsg(cMsgReceiverUserId); create index ctime_index on chatmsg(ctime);三:添加聊天记录。
从建表语句中看到,我们并没有使用外键,所以就需要手动检查外键约束的完整性。
select count(1) from user where uid = 消息发送者id union all select count(1) from user where uid = 消息接收者id
当上面的语句返回结果等于2时,才能执行添加语句。优化查询语句,可以参考我的这一篇文章:百万数据量优化方案
四:扩展字段
假如现在表已经产生了5千万条数据,产品经理过来说,小王,聊天记录需要加一个已读或未读的状态,如果此时在正式使用环境去alter tableadd column,可以想像这个操作有多耗时,有可能数据库直接崩溃都说不定,数据量大了,进行alter tableadd column操作数据库真崩溃过,不是危言耸听,还记得在建表的时候,我们创建了一个cExt字段,这个字段我们记录一个json 字符串,其实正确做法还要加一个版本号,这里我就没有加版本号。表里面的数据如下:
select cid,cTime,cContent,cext from chatmsg where cMsgSendUserId = 100 and cMsgReceiverUserId = 200 union ALL select cid,cTime,cContent,cext from chatmsg where cMsgSendUserId = 200 and cMsgReceiverUserId = 100
这个方法能解决大部分扩展字段,查询出cext后,然后把该值转换为对像就可以。如果新增的字段,需要出现在where中,就需要根据实际情况进行分析了。
cext扩展字段优点:
(1)可以随时动态扩展属性
(2)新旧两种数据可以同时存在
(3)迁移数据方便,写个小程序将旧版本ext的改为新版本的ext,并修改version
cext扩展字段不足:
(1)cext里的字段无法建立索引
(2)cext里的key值有大量冗余,建议key短一些
五:其它
比如项目初期,产品经理说,小王,我选择任意两个用户,查询这两个人的聊天记录,需要返回这两个用户的昵称,产品经理选择两个用户,我们得到了这两个用户的id,如果直接chat表join user表,性能同样不好,这种情况我们可以考虑使用空间换时间,比如在聊天表中直接创建接收者和发送者的昵称。这个方法表达的意思是,大数据表尽量不要join,性能是不好的,要用其它办法来解决这个问题。当然在正式项目中,具体情况还需要具体分析。
我也会补充一些想法,如果文中有描述错误的地方,希望指出来,谢谢,欢迎大家发表自己的想法,大家共同进步。
mysql千万级数据表,创建表及字段扩展的几条建议
标签:image union receive 产生 ctime 数据库 ref 常用 content
本文系统来源:http://www.cnblogs.com/cq-jiang/p/7750714.html
内容总结
以上是互联网集市为您收集整理的mysql千万级数据表,创建表及字段扩展的几条建议全部内容,希望文章能够帮你解决mysql千万级数据表,创建表及字段扩展的几条建议所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。