
MySQL
文章平均质量分 72
K_Watchmen
这个作者很懒,什么都没留下…
展开
-
Msql八股文拖把阿秀
事务:InnoDB是事务型的,可以使用commit和rollback语句。并发:MyISAM只支持表级锁,而InnoDB还支持行级锁外键:InnoDB支持外键备份:InnoDB支持在线热备份崩溃恢复:MyISAM崩溃后发生损坏的概率比InnDB高很多,回复速度也慢。其它特性:MyISAM支持压缩表和空间数据索引。原创 2024-08-12 23:18:40 · 926 阅读 · 0 评论 -
MySQL是如何实现事务隔离的?
用户定义的一系列操作,要么都做,要么都不做(回滚的意思),不可分割的单位;acid特性:原子性:要么做要么都不做;一致性:数据库完整约束(主键约束等等),用户定义的逻辑一致性;隔离性:为了提高并发性能,适当的破坏用户定义的逻辑一致性;让多个连接可以并发运行;分为:读未提交,读提交,可重复读隔离、串行化持久性:对数据库的变更作为一个整体存储在磁盘中确保数据无误:加锁,串行化:读和写都加锁其他三个:读不加锁,写加锁;原创 2024-07-04 12:00:30 · 425 阅读 · 0 评论 -
数据库康师傅
持久化:将内存中数据固化到硬盘上;持久化的作用:将内存中的数据存储在关系型数据库中;原创 2024-07-03 22:37:19 · 329 阅读 · 0 评论 -
普通索引和唯一索引怎么选择?
在发生merge的时候才是真正进行数据更新的时候,而change buffer的主要目的就是将记录的变更动作缓存下来,所以在一个数据页做merge之前, change buffer记录的变更越多(也就是这个页面上要更新的次数越多),收益就越大。当数据页不在内存时,InnoDB将更新操作存在change buffer中,当某次查询需要将该数据页读入内存时,执行change buffer中与这个页有关的操作(merge);唯一索引的更新不能够使用change buffer,只有普通索引可以使用;原创 2024-07-01 11:33:31 · 385 阅读 · 0 评论 -
事物到底是隔离的还是不隔离的?
3、如果把事务A的查询语句select * from t where id=1修改一下,加上lock in share mode 或for update,也都可以读到版本号是101的数据,返回的k的值是3。4、一个事务只需要在启动的时候声明说, “以我启动的时刻为准,如果一个数据版本是在我启动之前生成的,就认;6、这个视图数组和高水位,就组成了当前事务的一致性视图(read-view),而数据版本的可见性规则,就是基于数据的row trx_id和这个一致性视图的对比结果得到的。,而它的查询方法与表一样。原创 2024-06-30 16:16:26 · 529 阅读 · 0 评论 -
行锁功过:怎么减少行锁对性能的影响
MySQL的行锁是在引擎层由各个引擎自己实现的。但并不是所有的引擎都支持行锁,不支持行锁意味着并发控制只能使用表锁,这种引擎下的表,同一张表上任一时刻只能有一个更新在执行;会影响业务并发度;原创 2024-06-27 11:23:16 · 214 阅读 · 0 评论 -
全局锁和表锁:给表加个字段怎么这么多阻碍?
作为多用户共享的资源,当出现并发访问的时候,数据库需要合理地控制资源的访问规则。而锁就是用来实现这些访问规则的重要数据结构。原创 2024-06-26 21:27:11 · 778 阅读 · 0 评论 -
MySQL的主从
可以把binlog格式修改为 row。row 格式的 binlog 日志,记录的不是 SQL原文,而是两个 event:Table_map 和 Delete_rows。Table_map event说明要操作的表,Delete_rows event用于定义要删除的行为,记录删除的具体行数。row 格式的binlog记录的就是要删除的主键ID信息,因此不会出现主从不一致的问题。但是如果SQL删除10万行数据,转载 2024-06-26 20:59:25 · 35 阅读 · 0 评论 -
深入浅出索引(下)
回表:回到主键索引树搜索的过程;原创 2024-06-11 14:46:51 · 142 阅读 · 0 评论 -
深入浅出索引(上)
索引的出现就是为了提高数据查询的效率,像书的目录一样;原创 2024-06-11 13:14:29 · 411 阅读 · 0 评论 -
事务隔离:为什么你改了我还看不见?
事务就是要保证一组数据库操作,要么全部成功要么全部失败;事务支持是在引擎层实现的;MySQL是一个支持多引擎的系统,但并不是所有的引擎都支持事务;原创 2024-06-10 17:39:36 · 313 阅读 · 0 评论 -
一条SQL更新语句是如何执行的?
若redo log被写满了,那就要先将部分记录更新到磁盘中(此时redo log中被更新到磁盘中的记录被擦除,为后面继续向redo log中写腾空间);redo log是一个固定大小的空间,例如可以配置为一组4个文件,每个文件大小为1GB,那么总redo log就可以记录4GB的操作,并且是循环写的。1、redo log是InnoDB引擎特有的,binlog是MySQL的Server层实现的,所有引擎都可用;不使用“两阶段提交”,那么数据库的状态就有可能和用它的日志恢复出来的库的状态不一致。原创 2024-06-10 14:50:42 · 446 阅读 · 0 评论 -
还未完成写
存储引擎:存储引擎指的是在MySQL数据库中,表的数据存储和数据操作的实现方式。每个表都有其指定的存储引擎,这决定了该表的存储方式、数据处理方式、支持的功能(如事务、外键等)以及性能特点。存储引擎是与表关联的,并且在创建表时指定。查询时,MySQL根据表的存储引擎来执行相应的操作。索引、using()、慢查询日志。原创 2024-06-09 19:05:32 · 97 阅读 · 0 评论 -
一条SQL查询语句是如何执行的?
首先,对MySQL的基础架构进行分析,架构图见上图:通过上图可知一条SQL语句的执行过程。原创 2024-06-09 19:02:27 · 332 阅读 · 0 评论