
MySQL八股文
文章平均质量分 65
MySQL八股文
Java菜鸟、
努力学习java中
展开
-
MySQL分库分表
1,前提,项目业务数据逐渐增多,或业务发展比较迅速单表的数据量达1000W或20G以后。1,水平分库,将一个库的数据拆分到多个库中,解决海量数据存储和高并发的问题。按id也就是范围路由,节点1(1-100万)节点2(100万-200万)3.I0瓶颈(磁盘10、网络I0)、CPU瓶颈(聚合查询、连接数太多)1.根据自己简历上的项目,想一个数据量较大业务(请求数多或业务累积大)3,垂直分库,根据业务进行拆分,高并发下提高磁盘I0和网络连接数。2,水平分表,解决单表存储和性能的问题。原创 2024-05-01 12:53:49 · 51 阅读 · 0 评论 -
MySQL主从同步原理
二进制日志(BINLOG)记录了所有的 DDL(数据定义语言)语句和 DML(数据操纵语言)语句,但不包括数据査询(SELECT、SHOW)语句。2.从库读取主库的二进制日志文件 Binlog,写入到从库的中继日志 Relay Log。从库读取主库的二进制日志文件 Binlog ,写入到从库的中继日志 Relay Log。MySQL主从复制的核心就是二进制日志,二进制日志记录了所有的 DDL语句和 DML语句。2.从库读取主库的二进制日志文件 Binlog,写入到从库的中继日志 Relay Log。原创 2024-05-01 12:44:13 · 40 阅读 · 0 评论 -
MVCC解释
readView解决的是一个事务查询选择版本的问题,在内部定义了一些匹配规则和当前的一些事务id判新该访问那个版本的数据,不同的隔离级别快照读是不一样的,最终的访问的结果不一样。不同事务或相同事务对同一条记录进行修改,会导致该记录的undolog生成一条记录版本链表,链表的头部是最新的旧记录,链表尾部是最早的旧记录。简单的select(不加锁)就是快照读,快照读,读取的是记录数据的可见版本,有可能是历史数据,不加锁,是非阻塞读。RC隔离级别下,在事务中每一次执行快照读时生成ReadView。原创 2024-05-01 12:14:25 · 488 阅读 · 1 评论 -
MySQL事务
所以,我们一般使用的都是mysql默认的隔离级别:可重复读。我举个例子:A向B转账500,转账成功,A扣除500元,B增加500元,原子操作体现在要么都成功,要么都失败在转账的过程中,数据要一致,A扣除了500,B必须增加500在转账的过程中,隔离性体现在A像B转账,不能受其他事务于扰在转账的过程中,持久性体现在事务提交后,要把数据持久化(可以说是落盘操作)事务是一组操作的集合,它是一个不可分割的工作单位,事务会把所有的操作作为一个整体一起向系统提交或撤销操作请求,即这些操作要么同时成功,要么同时失败。原创 2024-05-01 12:05:15 · 684 阅读 · 1 评论 -
SQL优化
候选人:嗯,这个也有很多,比如SELECT语句务必指明字段名称,不要直接使用select*,还有就是要注意SOL语句避免造成索引失效的写法;候选人:这个我们主要参考的阿里出的那个开发手册《嵩山版》,就比如,在定义字段的时候需要结合字段的内容来选择合适的类型,如果是数值的话,像tinyint、int、bigint这些类型,要根据实际情况选择。如果数据库的使用场景读的操作比较多的时候,为了避免写的操作所造成的性能影响 可以采用读写分离的架构。读写分离解决的是,数据库的写入,影响了查询的效率。原创 2024-05-01 11:47:16 · 592 阅读 · 0 评论 -
MySQL索引
候选人:MVSQL的默认的存储引擎InnoDB采用的B+树的数据结构来存储索引,选择B+树的主要的原因是:第一阶数更多,路径更短,第二个磁盘读写代价B+树更低,非叶子节点只存储指针,叶子阶段存储数据,第三是B+树便于扫库和区间查询,叶子节点是一个双向链表。候选人:嗯,索引在项目中还是比较常见的,它是帮助MVSQL高效获取数据的数据结构,主要是用来提高数据检索的效率,降低数据库的10成本,同时通过索引列对数据进行排序,降低数据排序的成本,也能降低了CPU的消耗。原创 2024-05-01 11:37:00 · 1934 阅读 · 0 评论 -
MySQL如何定位慢查询
2、如果,项目中没有这种运维的监控系统,其实在MySQL中也提供了慢日志查询的功能,可以在MySQL的系统配置文件中开启这个慢日志的功能,并且也可以设置SQL执行超过多少时间来记录到一个日志文件中,一般项目配置的是2秒,只要SQL执行的时间超过了2秒就会记录到日志文件中,我们就可以在日志文件找到执行比较慢的SQL了。type 这条sql的连接的类型,性能由好到差为NULL、system、const、eg_ref、ref、range、index、all。eq _ref:主键索引查询或唯一索引查询。原创 2024-05-01 11:05:11 · 364 阅读 · 1 评论