持续更新 2021大厂技术面100道MySQL经典面试题分享( 三 )


如果是单机的话,选择自增ID;如果是分布式系统,优先考虑UUID吧,但还是最好自己公司有一套分布式唯一ID生产方案吧 。
80. mysql自增主键用完了怎么办?
自增主键一般用int类型,一般达不到最大值,可以考虑提前分库分表的 。
自增ID用完后 一直都是最大值 如果标识了主键 则主键冲突
81. 字段为什么要求定义为not null?
null值会占用更多的字节,并且null有很多坑的 。
82. 如果要存储用户的密码散列,应该使用什么字段进行存储?
密码散列,盐,用户身份证号等固定长度的字符串,应该使用char而不是来存储,这样可以节省空间且提高检索效率 。
83. Mysql驱动程序是什么?
这个jar包: mysql--java-5.1.18.jar Mysql驱动程序主要帮助编程语言与 MySQL服务端进行通信,如连接、传输数据、关闭等 。
84. 如何优化长难的查询语句?有实战过吗?85. 优化特定类型的查询语句86. MySQL数据库cpu飙升的话,要怎么处理呢?
排查过程:
处理:
其他情况:
也有可能是每个 sql 消耗资源并不多,但是突然之间,有大量的连进来导致 cpu 飙升,这种情况就需要跟应用一起来分析为何连接数会激增,再做出相应的调整,比如说限制连接数等
87. 读写分离常见方案?88. MySQL的复制原理以及流程
主从复制原理,简言之,就三步曲,如下:
如下图所示:
上图主从复制分了五个步骤进行:
89. MySQL中和的区别
存储精度都为秒
区别:
90. 的事务实现原理?91. 谈谈MySQL的
执行计划包含字段信息如下:
分别是 id、、table、、type、、key、、ref、rows、、Extra 等12个字段 。我们重点关注的是type,它的属性排序如下:
system> const > eq_ref > ref> ref_or_null >index_merge > unique_subquery > index_subquery > range > index > ALL
92. 的事务与日志的实现方式
日志的存放形式
事务是如何通过日志来实现的
93. MySQL中TEXT数据类型的最大长度94. 500台db,在最快时间之内重启 。95. 你是如何监控你们的数据库的?你们的慢日志都是怎么查询的?
监控的工具有很多,例如,lepus,我这里用的是lepus
96. 你是否做过主从一致性校验,如果有,怎么做的,如果没有,你打算怎么做?
主从一致性校验有多种工具 例如、、pt-table-等
97. 你们数据库是否支持emoji表情存储,如果不支持,如何操作?
更换字符集utf8–>
98. MySQL如何获取当前日期?
SELECT CURRENT_DATE();
99. 一个6亿的表a,一个3亿的表b,通过外间tid关联,你如何最快的查询出满足条件的第50000到第50200中的这200条数据记录 。
1、如果A表TID是自增长,并且是连续的,B表的ID为索引
select * from a,b where a.tid = b.id and a.tid>500000 limit 200;
2、如果A表的TID不是连续的,那么就需要使用覆盖索引.TID要么是主键,要么是辅助索引,B表ID也需要有索引 。
select * from b , (select tid from a limit 50000,200) a where b.id = a .tid;
100. Mysql一条SQL加锁分析
一条SQL加锁,可以分9种情况进行: