mysql
文章平均质量分 72
listenFeng.
这个作者很懒,什么都没留下…
展开
-
MySQL学习-非事务相关的六大日志、InnoDB的三大特性以及主从复制架构
3.错误日志:记录了数据库启动和停止,以及运行过程中发生任何严重错误时的相关信息。当数据库出现任何故障导致无法正常使用时,建议首先查看此日志。在MySQL数据库中,错误日志功能是默认开启的,而且无法被关闭。4.二进制日志:即binlog日志,记录了所有执行过的修改操作语句,不保存查询语句。可用于数据库灾备和主从复制。打开或关闭binlog文件需要在mysql配置文件中修改(Mysql5.7默认关闭,Mysql8.0默认开启),然后重启数据库binlog日志格式binlog写入磁盘的机制。原创 2024-04-17 15:40:50 · 1007 阅读 · 0 评论 -
MYSQL事务学习-锁机制
在多个线程并发访问某个数据尤其是敏感的数据的时候,我们需要保证这个数据在任何时候都是最多只有一个线程在访问,从而保证数据的完整性和一致性。而锁就是计算机协调多个进程或线程并发访问某一资源的机制。锁机制为实现MySQL的各个隔离级别提供了保证,而锁冲突也是影响数据库并发访问性能的一个重要因素。原创 2024-03-03 16:31:40 · 1008 阅读 · 0 评论 -
索引优化学习笔记
查询sql的优化有两个方面一个是物理查询优化,一个是逻辑查询优化物理查询优化:是通过索引和表连接方式等技术来进行优化逻辑查询优化:是通过 sql等价变换来提升查询效率,即换一种sql写法(列如将子查询转换为表连接的方式)原创 2024-02-18 15:57:47 · 510 阅读 · 0 评论 -
MYSQLB+树中的索引中数据页结构学习
在MYSQL中的B-TREE索引的节点都是一个一个的数据页,数据页也是磁盘和内存交互的基本单位,数据库在读取数据时无论是读取一行还是多行其实都是将这些行所在的数据页加载到内存中(如果一次读取只获取一行数据,那么读取多条数据则需要多次IO,效率过低)。在InnoDB中每个数据页的默认大小为16KB。原创 2024-02-19 16:18:37 · 696 阅读 · 0 评论 -
MYSQLB+树索引学习
随着表中存储的数据越来越多,则一个数据页都无法记录所有的叶子节点,那么再进行一次升级,根节点再复制数据到一个新的数据页,并将新增的记录放到一个新的数据页,自己则记录这个新节点的每个页面的最小的索引列和页码,这个过程不会无限次进行的,最多会有四级节点。另外MyISAM表中的二级索引存储的数据和主键索引类似,叶子节点存储的是索引列和地址值。原创 2024-02-19 16:32:27 · 294 阅读 · 0 评论 -
MYSQL的sql执行流程学习
客户端创建一个TCP连接请求,mysql服务器校验用户名和密码以及访问ip是否正确,如果正确则在连接池中获取一个连接,链接再从线程池中获取一个线程来执行sql语句sql语句执行时先会查询缓存如果缓存中有对应的sql执行缓存则直接返回结果给客户端,没有的话则进入下一步(MYSQL8.0已取消)对sql进行解析包括词法解析和语法解析,此时还会判断语法是否符合要求,不符合则会返回错误信息给客户端,解析完成后会生成一个新的语法树优化器再对其进行优化,包括物理优化和逻辑优化优化完成后会生成一个执行计划交给原创 2024-02-19 16:46:14 · 122 阅读 · 0 评论 -
MYSQL事务学习-基础篇
一个MYSQL服务器运行时会同时处理多个事务,按正常来讲,根据事务的隔离特性,当一个事务对某一个数据进行访问时,其他的事务应当先排队,但是这样的话效率就会比较低。所以我们希望在保持事务的隔离性的又想尽量提高服务器处理多个事务的性能,只能在二者之间平衡取舍。原创 2024-02-26 16:22:53 · 333 阅读 · 0 评论 -
MYSQL事务学习-日志篇
InnoDB采用了WAL技术(Write-Ahead Logging),这种技术的思想就是先写日志,再写磁盘,只有日志写入成功,才算事务提交成功,当出现服务器宕机一些数据未刷新到磁盘时,就可以通过写入的日志来恢复,保证事务的持久性。而脏页刷入磁盘并不是每次变更都会触发的,而是master线程隔一段时间处理一次,所以就可能出现在两次刷盘的间隔中,服务器就宕机了,那么写入缓冲池的数据就丢失了,但是事务是具有持久性的,事务提交的数据变更操作即使是服务器宕机也不应该丢失,所以需要redo日志记录事务的变更操作。原创 2024-02-26 16:23:53 · 366 阅读 · 0 评论 -
mysql笔记
mysql查出指定时间段中的每天的日期SELECT date_add( date_sub('2018-01-01',interval 1 day), INTERVAL ( cast( help_topic_id AS signed INTEGER ) + 1 ) day ) day FROM mysql.help_topic WHERE help_topic_id < DATEDIFF('2019-01-01',date_sub('2018-01-01',interval 1 day))原创 2021-02-25 13:35:03 · 108 阅读 · 0 评论