mysql 单表数据过大最好的处理方式

2019-04-01 09:25:13 +08:00
 blueorange

已经严重影响查询性能,纯粹添加索引会影响插入性能,请问还有其他方式么

8908 次点击
所在节点    程序员
25 条回复
blueorange
2019-04-01 09:25:40 +08:00
已经达到千万级别
jyounn
2019-04-01 09:28:18 +08:00
分区
lhx2008
2019-04-01 09:29:04 +08:00
先加索引啊,不加索引你事务插入要锁表的
zuoakang
2019-04-01 09:29:19 +08:00
分区,分表,分库。
reus
2019-04-01 09:32:26 +08:00
千万不算过大
索引该用就用
jabin88
2019-04-01 09:37:51 +08:00
同步到 mongodb 或者 es,这样就不用查 mysql 了,再多 10 倍都可以
blueorange
2019-04-01 09:54:50 +08:00
@jabin88 有什么好的方案实时同步吗?
dapang1221
2019-04-01 09:58:01 +08:00
比较好奇以前不加索引你是怎么查的……语句都是全表扫么……
ducklyl
2019-04-01 10:51:20 +08:00
如果只是影响查询性能,可以把数据同步到 es 或 solr,使用全文检索提高查询性能
sujin190
2019-04-01 11:37:25 +08:00
如果只是 4 到 5 项索引,写性能影响不大吧,除非你写特别多,如果每秒过千的写,估计也不是单表千万数据的问题了
千万级别对 mysql 数据真不算大,如果索引超过内存很多,倒是可以多加点内存,索引和查询缓存的效果还是很明显的
chaleaochexist
2019-04-01 11:45:59 +08:00
分区.分表.分库.
opengps
2019-04-01 11:47:57 +08:00
每月重复一次。如果不是分布式 DRDS 那种方案的话:
先考虑表分区
然后考虑分表
然后考虑分库
blueskea
2019-04-01 12:08:50 +08:00
拆表,分区,读写分离,canal 同步到 hive es tidb 之类
opengps
2019-04-01 12:12:28 +08:00
补上我的经历: https://www.opengps.cn/Blog/View.aspx?id=284
GPS 密集写入案例:单机数据库阶段,sql server 使用表分区,线上应用最大单日写入 1500 万行,最大单表大小 12 亿
没有更高实际应用数值的原因是替换了别的数据库
mmdsun
2019-04-01 12:46:56 +08:00
单表行数超过 500 万行或者单表容量超过 2 GB,推荐进行分库分表。
qianji201712
2019-04-01 12:47:28 +08:00
@opengps 大佬,学习了!
opengps
2019-04-01 12:52:53 +08:00
@qianji201712 怪我嘴拙,当时是 2012 年,设计这张表的时候不会写文章,至今才整理成可以让人看懂的文字
iyaozhen
2019-04-01 13:05:51 +08:00
要看几千万还有未来的趋势,1 亿以下表分区就行了。

再多就要分库分表了,业务层也需要改动
love
2019-04-01 13:10:37 +08:00
现在都 ssd,千万算个啥,除非你没索引全表扫描了
hilbertz
2019-04-01 13:14:55 +08:00
128g 内存,ssd 硬盘,几十亿都没问题

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/550692

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX