留言与评论(共有 0 条评论) |
发布时间:2020-04-12 08:38:24
第一优化你的sql和索引;
第二加缓存,memcached,redis;
第三以上都做了后,还是慢,就做主从复制或主主复制,读写分离,可以在应用层做,效率高,也可以用三方工具,第三方工具推荐360的atlas,其它的要么效率不高,要么没人维护;
第四如果以上都做了还是慢,不要想着去做切分,mysql自带分区表,先试试这个,对你的应用是透明的,无需更改代码,但是sql语句是需要针对分区表做优化的,sql条件中要带上分区条件的列,从而使查询定位到少量的分区上,否则就会扫描全部分区,另外分区表还有一些坑,在这里就不多说了;
第五如果以上都做了,那就先做垂直拆分,其实就是根据你模块的耦合度,将一个大的系统分为多个小的系统,也就是分布式系统;
这个问题涉及一下几个知识点
一、一般情况表的优化主要是索引,恰当的索引能加快查询的速度,当然索引的建立与表的主要用途有关,特别是表最频繁的操作是查询、添加、删除,查询是按哪些条件进行查询。
二、所谓的大表,对于数据库来说,没有绝对大小的限制,只要操作系统的硬盘、内存合适,表在一定范围内大一点、小一点对性能影响不大。分表是一个痛苦的过程,因为从逻辑上把表分成几个部分,会把查询、添加、修改的应用程序变得相当复杂,除非万不得已,没人会这样选择。数据太大的时候,一般使用磁盘阵列来提高性能,物理上一个大文件是分片存在不同的硬盘上,不同的硬盘可以并行读取,内存组装一下,达到了高速读取的效果。
留言与评论(共有 0 条评论) |
全站搜索