【C++实习生】每天十道面试题打卡

1. 原本可以执行得很快的 SQL 语句,执行速度却比预期的慢很多,原因是什么?如何解决?

原因:从大到小可分为四种情况

(1)MySQL 数据库本身被堵住了,比如:系统或网络资源不够。
(2)SQL 语句被堵住了,比如:表锁,行锁等,导致存储引擎不执行对应的 SQL 语句。
(3)确实是索引使用不当,没有走索引。
(4)表中数据的特点导致的,走了索引,但回表次数庞大。

解决:
(1)考虑采用 force index 强行选择一个索引
(2)考虑修改语句,引导 MySQL 使用我们期望的索引。比如把“order by b limit 1” 改成 “order by b,a limit 1” ,语义的逻辑是相同的。
(3)第三种方法是,在有些场景下,可以新建一个更合适的索引,来提供给优化器做选择,或删掉误用的索引。
(4)如果确定是索引根本没必要,可以考虑删除索引。

2. 误删数据怎么办?

DBA 的最核心的工作就是保证数据的完整性,先要做好预防,预防的话大概是通过这几个点:

1、权限控制与分配(数据库和服务器权限)
2、制作操作规范
3、定期给开发进行培训
4、搭建延迟备库
5、做好 SQL 审计,只要是对线上数据有更改操作的语句(DML和DDL)都需要进行审

你可能感兴趣的:(春招冲刺攻略,C++面试宝典,数据库,dba,mysql)