一、百万级与千万级的数据库表如何优化
当数据表的数据量急速成长为千万级别的大表时该如何优化呢?千万不要像某些人一样无头无脑的一开始就想到分库分表等切分数据,这是最下等的优化手段,真到了不得已的情况下才能进行分表。
小编认为,mysql最先做的优化手段就是根据sql语句添加索引字段,众所周知,索引能够避免指针回表扫描,可以直接性的快速提升查询效率,这才是提升优化效率的根本手段。
其次就是为数据做分布式缓存层,缓存中间件可以采用redis,因为redis支持每秒10万的并发量,我们可以将比较重要的查询频次比较多的数据存储到redis中,这样就可以减缓减轻mysql的压力,甚至可以用二级缓存、三级缓存来分担数据库的压力。
如果以上两个手段都做完的话,数据库查询还是比较慢,这时候我们再考虑做垂直切分,将大表的数据拆分到多张表中,一开始只做垂直拆分,每个表的字段都是一样的,这样我们当我们查询的时候做关联查询,将这几个表的数据再组合到一起,这样也会大大的提升相应的效率。
最后一步才是要做数据表的水平拆分,这一步是不得已而为之的,也是最麻烦和最困难的,对技术挑战性也比较高,甚至表结构都需要一定的改动,可以应用mycat中间件来做,说了这么多小编只是想告诉大家,sql优化一定要跟系统的业务相挂钩的,业务到了哪个级别我们优化也要不断的上升级别,千万不要一开始的就做拆分,这样就会导致业务的直接变复杂,也会增加我们的工作量从而得不偿失。
二、mysql性能调优的经验和常用方法
mysql在做性能调优的时候,从一开始设计数据表时我们就应该要考虑,比如说从如何选择数据字段开始,合理的选择数据字段能够达到减少占用空间的效果,这也是一种优化手段。
其次就是编写sql语句时候像是条件查询、关联查询这种查询语句,我们可以在sql语句上面下一番功夫,达到提升查询效率的效果,比如说我们可以用left join、right join等连接查询来取代子查询,在连接查询的时候用小驱动表为主表,数据量比较少的那一张表为驱动表,然后关联数据量大的那张表去查询,这样会提升查询效率。
合理的掌握索引的应用方法,复合索引、聚簇索引都要了解,在查询语句中了解索引的最左前缀匹配原则,每一个sql语句合理的匹配到索引的规则,这一点是思考优化的最重要的点。
当系统的业务量越来越繁杂,用户量越来越多的时候,就可以考虑主从复制读写分离分库分表等方案,提升sql的优化,同时还要考虑应用层层面的优化,比如说添加一级缓存、二级缓存等多级缓存来减轻数据库的压力。
扩展阅读:
三、mysql从零优化实战高手千万级调优视频教程信息
1、课程大小:7.86GB
2、课程课时:共计16课时 总时长18小时
3、播放格式:(mp4视频格式)百度云网盘在线播放、下载视频播放器播放、不加密
4、课件说明:教程课程涵盖素材、代码、笔记资料
以下是mysql千万级实战高手调优视频教程具体课程大纲:
1)性能调优课程大纲
2)mysql性能监控
3)分析器与优化器
4)mysql数据库底层架构剖析
5)执行器分析sql语句请求执行流程
6)数据库执行计划分析sql语句
7)查看数据库链接线程数
8)数据表字段类型优化
9)三范式与反三范式优化
10)主键类型优化
11)存储引擎的选择与优化
12)字符集选择
13)数据库冗余字段设计
14)索引调优
15)剖析B+Tree数据结构的底层原理
16)索引的分类与优缺点
17)联合索引、覆盖索引、聚簇索引的应用
18)索引全值匹配与最左前缀匹配
19)索引的细节调优与调升
20)多表联查关联查询调优
21)分页查询优化、函数计算调优
22)慢查询与数据访问调优
23)sql执行过程与优化器选择优化
24)子查询的调优
25)服务器参数设置调优
26)日志文件与锁机制优化
图一:mysql千万级实战高手调优课程详情
扩展阅读: