JAVA八股整理笔记-MySQL

主要整理问题。

一、日志

        1、 MySQL中有哪些日志?对应的功能

        2、redolog(物理日志)记录的内容是什么?有什么作用?

        3、redolog怎么保证持久性的?

        4、了解WAL技术吗?redolog刷页时机是什么?

        5、MySQL崩溃后,怎么通过redolog恢复数据?

        6、undolog(重做日志)日志的作用是什么?

        7、为什么有了undolog日志之后还需要redolog?

        8、binlog(二进制日志)是什么?记录的什么?

        9、binlog日志和redolog日志的区别?(server层、引擎层)

        10、介绍一下两阶段提交。

二、索引

        1、有哪些索引?

        2、索引有什么优缺点?

        3、聚簇索引和非聚簇索引的区别?

        4、什么样的字段适合当做主键?

        5、B+树的优点?为什么不用B树、为什么不用红黑树、二叉树...

        6、讲一下联合索引

        7、索引失效的情况有哪些?

        8、索引怎么进行优化。

三、事务

        1、MySQL事务隔离级别有哪些?

        2、MySQL数据并发问题有哪些?

        3、MySQL不同事务隔离级别是如何实现的?

        4、MySQL怎么保证并发安全的?

        5、介绍一下MVCC实现原理?

        6、串行读如何实现的?

四、锁

        1、MySQL有哪些锁?(全局锁、表级锁、行级锁)

        2、表级锁有哪些?它有啥作用?

        3、行级锁有哪些?它的作用?(记录锁、间隙锁)临键锁=记录锁+间隙锁

        4、说一下记录锁和间隙锁。

        5、MySQL死锁则呢么导致的?怎么进行查看?(SHOW ENGINE INNODB STATUS)

五、引擎

        1、MySQL的基础架构

        2、MySQL的存储格式(表、段、区、页)

        3、MySQL有哪些常见引擎?

        4、Innodb和MyISAM的区别是什么?

        5、Innodb内存结构了解吗?(buffer pool和log pool)

六、高可用

        1、介绍一下读写分离

        2、读写分离怎么实现?

        3、介绍一下MySQL主从复制过程

        4、主从复制延迟解决方法?

                a、要求强一致的场景,读强制走主库。

                b、对数据一致性不高的非关键业务,提示用户“数据同步中,请稍等...”

                c、使用半同步复制。主库进行事务提交时,等至少一个从库确认收到binlog,才算同步成功。

         5、介绍一下分库分表,垂直分库和水平分库(哈希分片、范围分片);垂直分表和水平分表。

         6、水平分库分表的策略?(范围分片、哈希分片、路由分片)

         7、怎么实现不停机扩容?

         8、常见的分库分表插件有哪些?(ShardingSphere MyCat)

        9、分库分表可能会带来什么问题?

                a、跨库事务无法依赖传统数据库ACID特性,需解决分布式事务解决

                b、无法进行跨表join,需在应用层进行拼接

                c、需保证全局ID唯一,无法通过传统自增ID实现。

        10、雪花算法了解吗?(0符号位,1·41-时间戳,42.51-机器编号(5机房+5服务器Mac),52.63-序列号。

七、调优

          1、如何查询mysql中的慢查询语句?

                a、启用慢查询日志。(重启设置配置开启,动态开启)

                b、show processlist;

                c、业务基建中加入对慢SQL的监控。

            2、如何开启慢查询日志

                a、编辑MySQL的配置文件my.cnf。

                       slow_query_log = 1

                       slow_query_log_file = '/slow.log'

                        long_query_time = 2

                b、set global命令动态设置        

                       set global slow_query_log = 1

                        set global slow_query_log_file = '/slow.log'

                        set global long_query_time = 2

               3、怎么优化慢SQL?

                        explain语句查找type字段是否使用索引。

                        添加索引、优化查询条件、减少返回字段。

               4、如何优化SQL?(尽可能少地扫描、尽可能快地返回结果)

                         即添加索引,或者改写SQL使它使用索引。

                        a、避免返回不必要的列(少用*)        

                        b、分页优化

                        c、索引优化(索引覆盖、避免使用!= /< > 避免列上函数计算)

                        d、join优化

                        e、排序优化

                        f、union优化

                5、explain函数作用

                        

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值