免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 26253 | 回复: 19
打印 上一主题 下一主题

Mysql大数据量条件下的性能优化 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-05-01 06:22 |只看该作者 |倒序浏览
90可用积分
我想用Mysql做一个大数据量高并发的项目。每天1000万条记录,至少保留7天的数据,也就是至少要有7000万条记录。要求能支持很高的并发访问(绝大多数只是查询,增删改的操作支持高并发操作更好,不支持也可以将就着过)。各位高手有什么优化方案没?求教

最佳答案

查看完整内容

每天1000w行数据3600*24=86400s平均插入11次那么峰值应该是少于110次(粗略估算)所以插入的数据不是太复杂的话,本身应该不存在问题而可能的问题应该在于删除过期数据!所以我的简单想法如下引擎最好innodb,为什么不用mysiam(并发,数据删除后出现的数据冗余)分表或者分库(如果应用层逻辑允许的话)最后我认为最简单也最实用的方法 innodb+5.1的分区(就分区在mysiam的成熟度,mysiam+分区也可以尝试)(实际上就解决了应用层的分 ...

论坛徽章:
0
2 [报告]
发表于 2008-05-01 06:22 |只看该作者
原帖由 sunnyfun 于 2008-5-4 10:25 发表
顺便问一下,楼上几位是如何在一台机上平衡插入和查询性能的?
每天1000万条记录,在我看来索引基本处于报废状态

每天1000w行数据
3600*24=86400s
平均插入11次
那么峰值应该是少于110次(粗略估算)
所以插入的数据不是太复杂的话,本身应该不存在问题
而可能的问题应该在于删除过期数据!
所以我的简单想法如下
引擎最好innodb,为什么不用mysiam(并发,数据删除后出现的数据冗余)
分表或者分库(如果应用层逻辑允许的话)

最后我认为最简单也最实用的方法 innodb+5.1的分区(就分区在mysiam的成熟度,mysiam+分区也可以尝试)(实际上就解决了应用层的分表或者分库)+多块磁盘
http://dev.mysql.com/doc/refman/5.1/en/partitioning-overview.html

最后强调,方案选择还是看你们的需求和当前的技术能力
之所以建议分表或者分库或者分区和使用innodb ,就是因为myisam在做大量删除的时候,耗费的时间比较长,特别是在索引删除后需要optimize的情况下
千万的数据删除应该在3-4分钟内导致表被lock

欢迎大家继续拍砖:)

论坛徽章:
0
3 [报告]
发表于 2008-05-01 15:32 |只看该作者
采用 1Master + N Slave 方案 是不会存在太大的问题的

想进一步了解可以跟我详谈,免费咨询

当然,论坛也有很多热心的朋友,希望你能顺利解决你遇到的问题

论坛徽章:
0
4 [报告]
发表于 2008-05-01 19:53 |只看该作者
配置高一点的服务器+innodb,一切ok

论坛徽章:
0
5 [报告]
发表于 2008-05-04 09:43 |只看该作者
就1000W的数据量每天。我觉得一台服务器就OK了。可以用叶老大的方案。
针对你的主要是读取数据。我来说明两点。
1、单台机器用INNODB。不过可以分两个库,一个库专门用来写的,另外一个用来读的,引擎是MYISAM。
2、采用M-S方案。M采用INNODB引擎,S采用MYISAM。当然是比第一个性能来的好。

论坛徽章:
0
6 [报告]
发表于 2008-05-04 10:06 |只看该作者
每天1000万条记录, 绝大多数只是查询......
晕,估计要砸不少银子

论坛徽章:
0
7 [报告]
发表于 2008-05-04 10:25 |只看该作者
顺便问一下,楼上几位是如何在一台机上平衡插入和查询性能的?
每天1000万条记录,在我看来索引基本处于报废状态

论坛徽章:
0
8 [报告]
发表于 2008-05-05 22:57 |只看该作者
随便找了一个,读每天2000w,写每天1300w.so easy

[ 本帖最后由 talen-t 于 2008-5-5 22:58 编辑 ]

1.jpg (13.34 KB, 下载次数: 95)

1.jpg

论坛徽章:
0
9 [报告]
发表于 2008-05-06 10:05 |只看该作者
原帖由 talen-t 于 2008-5-5 22:57 发表
随便找了一个,读每天2000w,写每天1300w.so easy

论坛徽章:
0
10 [报告]
发表于 2008-05-06 13:59 |只看该作者
原帖由 gogo407 于 2008-5-5 22:18 发表

每天1000w行数据
3600*24=86400s
平均插入11次
那么峰值应该是少于110次(粗略估算)
所以插入的数据不是太复杂的话,本身应该不存在问题
而可能的问题应该在于删除过期数据!
所以我的简单想法如下
引 ...

当遇到海量数据的时候,分区会遇到走索引比扫表还慢的情况,因为索引会大到内存都放不下。
当然准备超大内存和磁盘阵列肯定是没错的了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP