![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
mysql进阶之路
文章平均质量分 77
wang_xiao_xuan
这个作者很懒,什么都没留下…
展开
-
行锁,怎么减少行锁对性能的影响?
innodb行锁实现方式InnoDB行锁是通过给索引上的索引项加锁来实现的InnoDB这种行锁实现特点意味着:只有通过索引条件检索数据,InnoDB才使用行级锁,否则,InnoDB将使用表锁!从两阶段锁说起我先给你举个例子。在下面的操作序列中,事务B的update语句执行时会是什么现象呢?假设字 段id是表t的主键事务A事务Bbegin;->update t set k=k+1 where id=1;update t set k=k+1 where id=2;原创 2022-04-25 21:16:28 · 120 阅读 · 0 评论 -
全局锁和表锁
根据加锁的范围,MySQL里面的锁大致可以分成全局锁、表级锁和行锁三类全局锁顾名思义,全局锁就是对整个数据库实例加锁。MySQL提供了一个加全局读锁的方法,命令是 Flush tables with read lock (FTWRL)。当你需要让整个库处于只读状态的时候,可以使用这个命 令,之后其他线程的以下语句会被阻塞:数据更新语句(数据的增删改)、数据定义语句(包括 建表、修改表结构等)和更新类事务的提交语句。全局锁的典型使用场景是,做全库逻辑备份。也就是把整库每个表都select出来存成文本。原创 2022-04-25 21:15:34 · 830 阅读 · 0 评论 -
深入浅出索引下
深入浅出索引下在开始这篇文章之前,我们先来看一下这个问题:在下面这个表T中,如果我执行 select *fromTwhere k between 3 and 5,需要执行几次树的搜 索操作,会扫描多少行?下面是这个表的初始化语句mysql> create table T (ID int primary key,k int NOT NULL DEFAULT 0,s varchar(16) NOT NULL DEFAULT '',index k(k))engine=InnoDB;现在原创 2022-04-17 16:52:05 · 429 阅读 · 0 评论 -
MYISAM和InnoDB的对比
MYISAM和InnoDB的对比首先对于InnoDB存储引擎,提供了良好的事务管理,奔溃修复能力(了redo log-重做日志)和并发控制,因为InnoDB支持事务,所以对于要求事务完整性的场合选择InnoDB,比如数据操作除了插入和查询外还包含很多更新,删除操作,像财务系统等对数据准确性要求比较高的系统;缺点是:读写效率较差,占用数据空间相对较大其次对于MyISAM存储引擎,如果是小型应用,系统以读操作和插入操作为主,只有少量的更新,删除操作,并且对事务的要求不高,可选择MyISAM,该引擎的优点在于原创 2022-04-13 12:04:42 · 186 阅读 · 0 评论 -
事务和隔离
事务和隔离提到事务肯定会想到ACID,即原子性,一致性,隔离性,持久性在谈隔离级别之前,你首先要知道,你隔离得越严实,效率就会越低。因此很多时候,我们都要 在二者之间寻找一个平衡点。SQL标准的事务隔离级别包括:读未提交(read uncommitted)、 读提交(read committed)、可重复读(repeatable read)和串行化(serializable )。下面我逐 一为你解释:读未提交是指,一个事务还没提交时,它做的变更就能被别的事务看到。读提交是指,一个事务提交之后,它做原创 2022-04-13 12:04:04 · 914 阅读 · 0 评论 -
查询Sql的执行
一条SQL查询语句是如何执行的?[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OLOohaAe-1649762058325)(D:\桌面文件\sql执行.png)]查询缓存:连接建立完成后,你就可以执行select语句了。执行逻辑就会来到第二步:查询缓存。 MySQL拿到一个查询请求后,会先到查询缓存看看,之前是不是执行过这条语句。之前执行过 的语句及其结果可能会以key-value对的形式,被直接缓存在内存中。key是查询的语句,value是 查询的结果。如果你的查询原创 2022-04-12 19:16:48 · 441 阅读 · 0 评论