
mysql数据表规模九万万左右,怎么优化查询?
我的天啦,一个表九万万也是了不起了!
我上家公司明确划定,一张表不能跨越5000万,由于查询效率会有更大的降低!
无论如何,看下如何优化数据查询吧!
①,单库单表:
1,加索引,一个好的索引能用空间换取查询时间的大为降低!
2,使用存储历程:削减sql编译的时间!
3,优化sql:包罗团结查询的指向,where,order语句使用索引字段,削减使用多表团结查询,不要使用select *等等!
4,参数设置:扩大内存,调治线程池参数等等!
5,开启缓存:开启二级缓存,三级缓存,提升查询效率!
②,单库多表:
使用水平拆分(好比按月份),将表分为12张表,然后在代码端根据月份接见响应月份的表!
使用垂直拆分:许多字段只是作为保留记任命,(像一些约定,备注啥的字段往往很大),可以将查询中经常用到的字段放在常用的一张表中做查询,另一些字段放另一张表中存储,通过某个唯一索引字段联系起来,可以保证查询效率大为提升(由于磁盘IO削减)!
③,多库多表:
①,主从读写星散:表中数据虽然照样一致,然则由于多个从库读,主库写数据,大大削减共享锁的性能开销!
②,分库分表:指定一个字段作为,分库字段,使用hash值或者其它战略,漫衍在差其余库内里,在根据响应漫衍战略(好比上面的水平拆分或者垂直拆分),涣散到差其余内外!
好比我们现在的数据库设计为8库1024表,你的快要一亿的数据在我们的单张内外面只有不到10W!
虽然理论上,一张表的巨细不做任何限制,然则基于查询效率,索引性能等,不宜超出5000万数据!
关于多线程,漫衍式,微服务,数据库,缓存的更多干货,会继续分享,敬请关注。。
本文部分内容来源于互联网,如有侵权请联系我们删除!如何快速有效地掌握数据库语言MySql?