MYSQL
文章平均质量分 83
主要介绍对MySQL的相关理解
囚蕤
这个作者很懒,什么都没留下…
展开
-
MySQL锁——锁类型,加锁方式
一个事务在持有AUTO-INC锁时,其他事务在对数据进行更新操作时会发生阻塞.InnoDB为了提高效率,引入了一种轻量级锁.在插入数据时,InnoDB会为AUTO-INCREMENT修饰的字段添加轻量级锁,然后赋予一个自增的值,之后无须等待整个插入语句执行完就可以释放该轻量级锁。按照唯一索引的退化原则对范围内的数据一条一条查询,一条一条加锁,当某条记录存在时,退化成记录锁,只锁这一个记录,当记录不存在是,退化成间隙锁,锁住两个记录之间的间隙。在对记录加独占锁之前,需要先在表级别加上一个意向独占锁。原创 2022-09-18 10:19:26 · 1287 阅读 · 0 评论 -
MySQL事务——事务隔离界别,MVCC
然后事务A修改数据a的值为200,此时a的trx_id变为21,并将旧版本的数据存储到undo log中,事务B再次读取数据a时发现trx_id=min_trx_id,而且a的trx_id在事务B的m_ids中,所以不读取该版本的a,而是依靠roll_pointer读取undo日志中的旧版本的数据a,当校验了旧版本的数据a的trx_id满足要求时,读取该a的值为100.事务B启动[creator_trx_id:22,m_ids:21,22,min_trx_id:21,max_trx_id:23]原创 2022-09-15 21:31:13 · 297 阅读 · 0 评论 -
索引常见面试题
索引对于数据库而言就相当于目录对于书.能够提高查找的效率,相当于是利用空间换时间.索引的存在能够让存储引擎更快地获取到目标数据.存储引擎的主要功能就是存储数据,为数据创建索引以及更新,查询数据.MySQL的存储引擎有InnoDB,MyISAM,Memory等,MySQL5.5之后的存储引擎默认为InnoDB.原创 2022-09-05 22:45:46 · 721 阅读 · 0 评论 -
MySQL——执行一条select语句期间发生了什么
连接建立好以后,输入的SQL语句就可以发送到MySQL服务上MySQL服务接收到SQL语句后会解析SQL语句的第一个字段,如果是select的话,就会从[查询缓存]里查找数据,看是否能直接找到SQL语句对应的结果,[查询缓存]中的记录是 以key-value的形式存储的,key是SQL语句,value是SQL语句对应的结果。Server层负责建立连接,分析和执行SQL.MySQL的大部分功能都在Server层实现.所有的内置函数和跨存储引擎的功能(存储过程,视图,触发器等)也在Server层实现.原创 2022-09-05 08:00:00 · 249 阅读 · 0 评论 -
关于幻读和不可重复读的理解
目录不可重复读和幻读不可重复读和幻读我们知道不可重复读和幻读是因为并发执行多个事务时导致的"误读"的结果.很多时候我们无法区分不可重复读和幻读之间到底有什么不同.感觉大部分人的描述推到最后发现这两者都是同一个事务中前后读取的结果不一样.在此,我阐述一下我自己的理解不可重复读和幻读都是一个事务在前后两次读取同一个记录集合时读取到的结果不一样.区别在于不可重复读读取到的结果不一样的原因是因为该记录集合中某些记录的值发生了改变;而幻读读取到的结果不一样的原因是因为该记录集合由于其他事务的写操作而导致该记录集原创 2022-05-31 17:26:13 · 890 阅读 · 0 评论 -
MySQL中关于索引和事务的相关论述
目录索引介绍相关操作本质(背后的数据结构)事务索引介绍索引定义:索引对于MySQL而言就相当于一本书的目录,通过某些数据结构来表示记录的相关的正,通过这些特征能够更快的找到相关记录,从而提高查找的效率索引的好处:能够大幅度提升查找的效率。相较于内存中的查找,MySQL中相关记录的查找往往需要在磁盘上通过IO流进行操作,由于磁盘上操作的速度较内存中操作的速度要慢上3-4个数量级,在加上数据量的庞大,因此索引对查找的提升效率非常大。索引的适用场景:索引能够大幅度提高查找的效率,但同时也会导致数据的增原创 2022-03-17 11:13:42 · 1304 阅读 · 0 评论