MYSQL面试题 TOP100
1. mysql有哪些存储引擎? 2. 什么是mysql 存储引擎? 3. mysql各存储引擎的特点是什么? 4. 如何查看 mysql 支持的存储引擎?创建表如何指定存储引擎? 5. 什么是 mysql 索引? 6. mysql 有哪些类型的索引? 7. mysql 如何启停? 8. 如何作数据备份? 9. 什么是mysql主从同步? 10. mysql主从同步的目的?为什么要做主从同步? 11. mysql 主从同步的原理是什么? 12. 如何配置 mysql 主从同步? 13. 什么是数据库事务? 14. 数据库事务的四个特性是什么? 15. mysql 事务隔离级别是什么? 16. 为什么要分库分表? 17. mysql分库分表的方案有哪些? 18. mysql分库分表后可能面临的问题 19. 什么是 mysql 慢查询? 20. 如何分析慢查询 sql? 21. mysql 有哪些常用的 sql 优化策略? 22. 有文本数据和整形数据,直接写文件和存入数据库,哪种方式更快? 23. mysql事务隔离级别有哪些,各自的含义是什么?MYSQL 默认的隔离级别是是什么? 24. 说一下MYSQL 常用存储引擎有哪些?各自优缺点 25. 高并发下,如何做到安全的修改同一行数据? 26. 说一下乐观锁和悲观锁是什么?INNODB 的行级锁 27. SQL 优化的一般步骤是什么?怎么看执行计划?如何理解其中各个字段的含义? 28. 数据库会死锁吗,举一个死锁的例子,mysql 怎么解决死锁? 29. 说一下Mysql 的索引原理,索引的类型有哪些?如何创建合理的索引?索引如何优化? 30. 简单说一下数据库中 BTREE 和 B+tree 区别? 31. ACID 是什么? 32. 说一下Mysql 怎么优化 table scan (全表扫描)? 33. 如何写 sql 能够有效的使用到复合索引? 34. 说一下mysql 中 in 和 exists 区别? 35. 数据库自增主键可能有哪些问题?

为什么要分库分表?

单机数据库的存储容量,性能容量都是有极限的。即使顶配的服务器,单机情况下,业务量不断上涨的情况下,总会有到达极限的那一天。如果不能提前降低单机压力,把单机压力控制在合理范围内,那么最终的结果只能是数据库崩溃,服务无响应。

因此,分表的目的就在于此,减小数据库的负担,缩短查询时间。

 

另一方面,随着业务规模的扩大,业务复杂度的提高,团队分工的细化和调整。原来放在一起的数据已经不适合继续放在一起库或者表中,通过重构系统,将不同业务功能的数据,分布到不同的库中。可以优化业务线逻辑结构,优化团队组织机构。

mysql中有一种机制是表锁定和行锁定,是为了保证数据的完整性。表锁定表示你们都不能对这张表进行操作,必须等我对表操作完才行。行锁定也一样,别的sql必须等我对这条数据操作完了,才能对这条数据进行操作。

 

分库分表前常见面临的问题

用户请求量太大

因为单服务器TPS,内存,IO都是有限的。

解决方法:分散请求到多个服务器上; 其实用户请求和执行一个sql查询是本质是一样的,都是请求一个资源,只是用户请求还会经过网关,路由,http服务器等。

单库太大

单个数据库处理能力有限;单库所在服务器上磁盘空间不足;

单库上操作的IO瓶颈 解决方法:切分成更多更小的库

单表太大

CRUD都成问题;索引膨胀,查询超时

解决方法:切分成多个数据集更小的表。