mysql 数据库结构设计
时间:2011-08-01
来源:互联网
数据量一天在2-300W,该表读写都非常频繁,但是没更新操作,查询热点是最近三个月。
由于数据量实在大,所以想进行分表。一开始使用myisam引擎按月分表,然后merge最近三个月的表。但是发现myisam引擎在大量读写并发同时存在的时候会引起大量的堵塞锁表等待,将并行尾部插入(--concurrent_insert=2)或者是降低写性能都于事无补。
但是使用innodb又不能使用merger,要是使用union all创建视图又怕读的性能太低。
请问各位有没有类似经验,指点一下。
作者: linjia828 发布时间: 2011-08-01
版本5.5.12
作者: linjia828 发布时间: 2011-08-01
此业务非常适合使用分区表的架构....操作特点:
1.数据只有INSERT和SELECT
2.INSERT只为当前一个分区
3.查询热点是最近三个月...若是带有时间范围的查询没问题的,会只查询对应的分区
4.对于统计分析的内容,若是指针对一天的数据做统计分析,那也是非常有利的...
所以建议InnoDB+partition
作者: jinguanding 发布时间: 2011-08-01
作者: linjia828 发布时间: 2011-08-01
作者: linjia828 发布时间: 2011-08-01
我一直用的5.1.40,5.1.34 二大版本,没有发现BUG,只发现分区存在的使用限制
其他办法到是有,比如借助存储过程解决...你继续使用InnoDB引擎的分表办法....
作者: jinguanding 发布时间: 2011-08-01
有没有其他分片技术或者其他设计方式?
有一种,就是物理分表,每三个月一个表,比如说 tb_name_2011010203,2011年前三月份的表。tb_name_2011040506,2011年4月份5月份6月份的表,tb_name_2011070809表示2011年7月份8月份9月份的表。一次类推。
因为mysql 分区的隐藏的bug,又没有稳定的官方支持,所以我们领导决定都是用物理分表的方式来解决实际问题。
而且innodb的ibd策略是 独享表空间,就是一个表一个ibd文件。
希望我自己的经历可以给你提供一些参考。
作者: mysqldbd 发布时间: 2011-08-01
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28