![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
跟着大佬充充电
maeeki
这个作者很懒,什么都没留下…
展开
-
六. 怎么减少行锁对性能的影响
InnDB 行锁添加和释放的时机(两阶段锁协议指的是什么?) 在InnoDB事务中,行锁是在需要的时候才加上的,但并不是不需要了就立刻释放,而是要等到事务结束时才释放。这个就是两阶段锁协议。 提示: 如果一个事务需要锁多行,那么要把最可能造成锁冲突、最可能影响并发度的锁往后放。 InnoDB进入死锁后的两种处理策略是什么? 一种策略是直接进入等待,直到超时,超时时间可以通过参数:innodb_lock_wait_timeout 设置,该参数默认值为50s (推荐) 另一种策略是,发现死锁后,进.原创 2020-05-30 00:36:12 · 157 阅读 · 0 评论 -
五. 全局锁和表锁
全局锁 全局锁就是对整个数据库加锁,MySQL提供的有一种加锁的方法,命令是 Flush tables with read lock (FTWRL),加锁后,DML,DDL操作都将被阻塞 全局锁的使用场景? 若是在进行数据库备份的时候没有加全局锁,会导致备份系统备份得到的库不是一个逻辑时间点,这个视图就是逻辑不一致的 InnoDB更好的全局加锁的方式是怎样的? 由于InnoDB支持可重复读,因此可以使用mysql的逻辑备份工具,加上参数 -single-transaction,达到导数据之前就先开原创 2020-05-29 00:02:41 · 136 阅读 · 0 评论 -
四. 深入浅出索引
索引的常见模型 哈希表 解释 哈希表是一种键值存储数据的结构,用一个哈希函数把键key换算成数组的一个确定的位置,把值放在数组对应的位置里,不可避免的,若是多个key值经过哈希函数换算,会得到同样的值,这时候会将要存储的值以链表的方式进行存储 适用场景 适用于只有等值查询的场景,若是牵涉到范围查询,由于哈希表存储值的时候并不是顺序存储的,无法精确的定位要查找的值在某一个相对精确的范围内,查的时候甚至不得不遍历所有的元素,就会导致查询速度慢的问题 有序数组 适用场景 适用于等值查询和范围查询,由于其是有原创 2020-05-28 16:10:08 · 128 阅读 · 0 评论 -
三.事务隔离
事务的隔离级别 读未提交(read uncommited) 一个事务还没提交时,它做的变更就能被别的事务看到 读提交(read commited) 一个事务提交之后,它做的变更才会被其他事务看到。 可重复读(repeatable read) 一个事务执行过程中看到的数据,总是跟这个事务在启动时看到的数据是一致的。当然在可重复读隔离级别下,未提交变更对其他事务也是不可见的。 串行化(serializable )顾名思义是对于同一行记录,“写”会加“写锁”,“读”会加“读锁”。当出现读写锁冲突的时候,后访问.原创 2020-05-28 00:57:04 · 107 阅读 · 0 评论 -
二.一条SQL更新语句是如何执行的
redo log 怎么理解? 答:由于在 MySQL 里,如果每一次的更新操作都需要写进磁盘,然后磁盘也要找到对应的那条记录,然后再更新,整个过程 IO 成本、查找成本都很高。为了解决这个问题,InnoDB引入了redo log的设计,用的是WAL 技术,WAL 的全称是 Write-Ahead Logging,它的关键点就是先写日志,再写磁盘,先用redo log将数据写入内存,将本次操作写入物理日志(持久化到硬盘),然后再在空闲的时候将数据同步到磁盘中,注意,redo log是将更新的数据直接的先写入.原创 2020-05-28 00:44:50 · 164 阅读 · 0 评论 -
一. 一条SQL查询是如何执行的
MySQL的基本逻辑架构是怎样的? 如下图所示,MySQL基本逻辑架构主要分为server层和存储引擎层,server层主要包括 连接器、分析器、优化器、执行器、查询缓存这些,存储引擎层负责数据的存储和提取。其架构模式是插件式的 如何查看与当前数据库建立的所有的连接的状态? show processlist 与客户端建立连接默认超时时间是? 答:八个小时 有时候MySQL占用的内存长的特别快,可能的原因是? 答:MySQL在执行过程中临时使用的内存是管理在连接对象里面的,这些资源会在连接断开时才释.原创 2020-05-27 23:35:04 · 121 阅读 · 0 评论