【面试】数据库进阶篇(三)

0、问题清单

5、优化

1、SQL查询查询优化的步骤(*32、SQL优化;
3、优化MySQL。

6、备份恢复

1、MySQL的容灾备份机制;数据库备份。
2、数据库挂了怎么办?除了热备份还有什么办法?热备份、冷备份。

五、优化

1、SQL查询优化的步骤?(*3)

[1] 使用show status查看数据库运行状况(连接、CURD执行等)。
[2] 慢查询日志+show processlist定位慢SQL
[3] 用explain/desc分析慢SQL并解决。

2、SQL优化。

详细可看移步【数据库】SQL语句优化技巧,主要从索引、表分析、排序等方面入手。

3、优化MySQL

思路:(图参考他人)
引自他人

【1】、SQL语句及索引优化
a)发现有问题的SQL?
慢查询日志、Explain分析SQL执行计划(!Using file sort & Using temporay)。

b)SQL语句优化
–优化insert语句,一次插入多值;
–避免where自己使用 !=或<>操作符,否则引擎将放弃索引而进行全表扫描;
–尽量避免where字句对字段进行null判断,否则将导致引擎放弃使用索引进行全表扫描;
–优化嵌套查询:子查询可以被更有效率的连接替代;
–很多时候exists代替in是一个好的选择。

【2】、数据库表结构优化
a)合适数据类型;
–选择较小的数据类型解决问题;
–选择简单的数据类型;
–尽可能使用not null定义字段;
–尽量避免使用text类型,非用不可时时最好考虑分表。

b)表范式优化
遵循三大范式。

c)表垂直拆分
–不常用字段单独放在一表;
–大字段独立放入一个表;
–经常用的字段放入一个表。

d)表水平拆分
用于解决数据表中数据过大的问题,水平拆分每一个表的结构完全一致。

数据平分到N张表的常用方法包括以下两种:
–对ID进行hash计算;
–针对不同hashID将数据存入不同表中。

表水平拆分优缺点:
优点:降低查询时需要读的数据和索引页数,同时降低索引层数,提高查询速度;把数据放到多个数据库中,提高系统总体可用性(分库、鸡蛋不能放在同一个篮子里);
缺点:跨分区表的数据查询、统计及后台报表操作等问题。

【3】、系统配置优化
a)操作系统配置:增加TCP支持队列;
b)MySQL配置文件优化:Innodb缓存设置及缓存池个数。

【4】、硬件优化:CPU+内存+磁盘

六、备份恢复

待补充……

七、参考

1、MySQL优化(1)--------常用的优化步骤
2、SQL查询优化的步骤

猜你喜欢

转载自blog.csdn.net/HeavenDan/article/details/112104559