mysql 达到1亿级别的表如何设计优化

 我来答
西门公子庆
2014-02-20 · TA获得超过1879个赞
知道小有建树答主
回答量:482
采纳率:100%
帮助的人:263万
展开全部

单表一亿?还是全库1亿?

1.首先可以考虑业务层面优化,即垂直分表。

垂直分表就是把一个数据量很大的表,可以按某个字段的属性或使用频繁程度分类,拆分为多个表。

如有多种业务类型,每种业务类型入不同的表,table1,table2,table3.

如果日常业务不需要使用所有数据,可以按时间分表,比如说月表。每个表只存一个月记录。


2.架构上的优化,即水平分表。

水平分表就是根据一列或多列数据的值把数据行放到多个独立的表里,这里不具备业务意义。

如按照id分表,末尾是0-9的数据分别插入到10个表里面。

可能你要问,这样看起来和刚才说的垂直分表没什么区别。只不过是否具备业务意义的差异,都是按字段的值来分表。


实际上,水平分表现在最流行的实现方式,是通过水平分库来实现的。即刚才所说的10个表,分布在10个mysql数据库上。这样可以通过多个低配置主机整合起来,实现高性能。


最常见的解决方案是cobar,这个帖子介绍的比较完善,可以看看。

http://blog.csdn.net/shagoo/article/details/8191346


cobar的逻辑层次图:

不过这种分库方式也是有一定局限性的,需要应用程序做相应的配合,比如说分库的情况下,虽然可以实现跨库查询,但是不能进行相关的group by计算。


另外,之前关于水平分表的实现方式,也可以通过表分区来实现。


mysql优化的方式有很多,选择上主要还是要考虑个人的实际情况,如代码不可控的情况下,就不适合选择按字段属性分表的情况,这样可能会带来大量的重构以及很多不可预期的风险。


而架构的优化,虽然对应用是透明的,但对sql的写法有很多局限性,比如说不能使用聚合函数等等,同时也需要有充足的硬件资源,只有一台服务器的情况下是没有意义的。


相比起来,代价最低的是按时间分表或分区,这两种办法对应用来说都是透明的。


分区只需要一次本地数据迁移的操作。

而通过分表把现网数据和历史数据分离,唯一的代价是定期的数据维护。


一般如果表里面有1亿数据的情况下,索引的问题应该是常识了,这方面我就不说了。


另外如果觉得答的不错多给点分。

柚鸥ASO
2024-03-16 广告
柚鸥ASO就蛮不错的;专注应用商店下载量优化、评分优化、关键词排名优化;柚鸥网络-全球ASO优化服务商专注ASO优化已11年!(效果说话不到效果不收费)【基础优化】协助客户针对app情况在各大应用商店进行标题,副标题,关键词,描述等优化。【... 点击进入详情页
本回答由柚鸥ASO提供
百度网友e5c8c7f
2018-04-17 · TA获得超过385个赞
知道答主
回答量:1
采纳率:0%
帮助的人:927
展开全部

“mysql”达到1亿级别如何设计优化?

1.首先可以考虑业务层面优化,即垂直分表。

垂直分表就是把一个数据量很大的表,可以按某个字段的属性或使用频繁程度分类,拆分为多个表。

如有多种业务类型,每种业务类型入不同的表,table1,table2,table3.

如果日常业务不需要使用所有数据,可以按时间分表,比如说月表。每个表只存一个月记录。

2.架构上的优化,即水平分表。

水平分表就是根据一列或多列数据的值把数据行放到多个独立的表里,这里不具备业务意义。

如按照id分表,末尾是0-9的数据分别插入到10个表里面。

可能你要问,这样看起来和刚才说的垂直分表没什么区别。只不过是否具备业务意义的差异,都是按字段的值来分表。

实际上,水平分表现在最流行的实现方式,是通过水平分库来实现的。即刚才所说的10个表,分布在10个mysql数据库上。这样可以通过多个低配置主机整合起来,实现高性能。

最常见的解决方案是cobar,这个帖子介绍的比较完善,可以看看。

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zhongtyler
2014-02-19 · TA获得超过4408个赞
知道大有可为答主
回答量:4384
采纳率:79%
帮助的人:934万
展开全部
如果要插入快,就少些索引,如果查询快,就建立合适的索引,没什么特殊的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式