华为od 面试八股文_数据库_04_含答案 浅浅的花香味﹌ 2024-04-20 14:09 67阅读 0赞 #### 1:隔离级别与锁的关系 #### 在Read Uncommitted级别下,读取数据不需要加共享锁,这样就不会跟被修改的数据上的排他锁冲突 在Read Committed级别下,读操作需要加共享锁,但是在语句执行完以后释放共享锁; 在Repeatable Read级别下,读操作需要加共享锁,但是在事务提交之前并不释放共享锁,也就是必须等待事务执行完毕以后才释放共享锁。 SERIALIZABLE 是限制性最强的隔离级别,因为该级别锁定整个范围的键,并一直持有锁,直到事务完成。 #### 2: 如何对数据库如何进行垂直拆分或水平拆分的? #### 水平拆分的意思,就是把一个表的数据给弄到多个库的多个表里去,但是每个库的表结构都一样,只不过每个库表放的数据是不同的,所有库表的数据加起来就是全部数据。水平拆分的意义,就是将数据均匀放更多的库里,然后用多个库来抗更高的并发,还有就是用多个库的存储容量来进行扩容。 垂直拆分的意思,就是把一个有很多字段的表给拆分成多个表,或者是多个库上去。每个库表的结构都不一样,每个库表都包含部分字段。一般来说,会将较少的访问频率很高的字段放到一个表里去,然后将较多的访问频率很低的字段放到另外一个表里去。因为数据库是有缓存的,你访问频率高的行字段越少,就可以在缓存里缓存更多的行,性能就越好。这个一般在表层面做的较多一些。 两种分库分表的方式: 一种是按照 range 来分,就是每个库一段连续的数据,这个一般是按比如时间范围来的,但是这种一般较少用,因为很容易产生热点问题,大量的流量都打在最新的数据上了。 或者是按照某个字段hash一下均匀分散,这个较为常用。 range 来分,好处在于说,扩容的时候很简单,因为你只要预备好,给每个月都准备一个库就可以了,到了一个新的月份的时候,自然而然,就会写新的库了;缺点,但是大部分的请求,都是访问最新的数据。实际生产用 range,要看场景。 hash 分发,好处在于说,可以平均分配每个库的数据量和请求压力;坏处在于说扩容起来比较麻烦,会有一个数据迁移的过程,之前的数据需要重新计算 hash 值重新分配到不同的库或表 #### 3:统计过慢查询吗?对慢查询都怎么优化过? #### 在业务系统中,除了使用主键进行的查询,其他的我都会在测试库上测试其耗时,慢查询的统计主要由运维在做,会定期将业务中的慢查询反馈给我们。 慢查询的优化首先要搞明白慢的原因是什么? 是查询条件没有命中索引?是load了不需要的数据列?还是数据量太大? 所以优化也是针对这三个方向来的, 首先分析语句,看看是否load了额外的数据,可能是查询了多余的行并且抛弃掉了,可能是加载了许多结果中并不需要的列,对语句进行分析以及重写。 分析语句的执行计划,然后获得其使用索引的情况,之后修改语句或者修改索引,使得语句可以尽可能的命中索引。 如果对语句的优化已经无法进行,可以考虑表中的数据量是否太大,如果是的话可以进行横向或者纵向的分表。 #### 4:如何优化关联查询 #### 确定ON或者USING子句中是否有索引。 确保GROUP BY和ORDER BY只有一个表中的列,这样MySQL才有可能使用索引。 #### 5:**简述MySQL的架构** #### MySQL可以分为应用层,逻辑层,数据库引擎层,物理层。 应用层:负责和客户端,响应客户端请求,建立连接,返回数据。 逻辑层:包括SQK接口,解析器,优化器,Cache与buffer。 数据库引擎层:有常见的MyISAM,InnoDB等等。 物理层:负责文件存储,日志等等。 ![14494f45b28045be93f199401014fa0f.jpeg][] #### 6:**简述执行SQL语言的过程** #### 1. 客户端首先通过连接器进行身份认证和权限相关 2. 如果是执行查询语句的时候,会先查询缓存,但MySQL 8.0 版本后该步骤移除。 3. 没有命中缓存的话,SQL 语句就会经过解析器,分析语句,包括语法检查等等。 4. 通过优化器,将用户的SQL语句按照 MySQL 认为最优的方案去执行。 5. 执行语句,并从存储引擎返回数据。 #### 7:**如何解决数据库死锁** #### 1. 预先检测到死锁的循环依赖,并立即返回一个错误。 2. 当查询的时间达到锁等待超时的设定后放弃锁请求。 #### 8:**为什么引入索引?** #### 为了提高数据查询的效率。索引对数据库查询良好的性能非常关键,当表中数据量越来越大,索引对性能的影响越重要。 [14494f45b28045be93f199401014fa0f.jpeg]: https://image.dandelioncloud.cn/pgy_files/images/2024/04/20/054a069f473d44479077a109a2121a0e.jpeg
还没有评论,来说两句吧...