File tree Expand file tree Collapse file tree 2 files changed +20
-5
lines changed Expand file tree Collapse file tree 2 files changed +20
-5
lines changed Original file line number Diff line number Diff line change @@ -181,14 +181,19 @@ EXPLAIN 命令的extra一栏中有Using index condition,表明使用了索引
181181
182182` select * from table limit 10 ` 和 ` select * from table limit 10000, 10 ` 的查询时间是不一样的,后者是查询出 10010 条,再取最后 10 条记录。
183183
184- 本质原因就是:偏移量(offset)越大,mysql就会扫描越多的行,然后再抛弃掉。这样就导致查询性能的下降。
184+ 本质原因就是:每次查询时扫描整张表(不走索引), 偏移量(offset)越大,mysql就会扫描越多的行,然后再抛弃掉。这样就导致查询性能的下降。
185185
186186解决方案:
1871871 . 标签记录法,使用 ` select * from table where id > 10000 limit 10 ` ,
1881882 . 范围查询,使用 ` select * from table where id between 100000 and 100010 order by id desc; `
1891893 . 使用子查询,把条件转移到主键索引树,使用 ` select * from table where id >= (select a.id from table a where a.update_time >= xxx limit 100000, 1) limit 10 `
1901904 . INNER JOIN 延迟关联,与上述的子查询思路类似,将条件转移到主键索引树
191- 5 . 尽量满足索引覆盖,效率低下是因为回表次数过多,如果可以满足索引覆盖,则就不需要回表
191+ 5 . 尽量满足索引覆盖
192+
193+ ## 单表数据量大了性能为什么下降
194+
195+ 因为表的数量达到一定量级后,MySQL 内存无法存储所有的索引,使得查询语句需要产生磁盘IO,导致性能下降。
196+
192197
193198## ACID 原则
194199- Atomicity(原子性),每次事务是原子的,事务包含的所有操作要么全部成功,要么全部不执行。一旦有操作失败,则需要回退状态到执行事务之前;通过 undo log 来保证。
Original file line number Diff line number Diff line change @@ -131,9 +131,19 @@ Prototype(原型)对象和单例对象的区别:
131131
132132事务的几个参数:rollbackFor,propagation,isolation
133133
134- PROPAGATION_REQUIRES_NEW 和 PROPAGATION_NESTED 的区别:
135- - PROPAGATION_REQUIRES_NEW:内层事务与外层事务就像两个独立的事务一样,一旦内层事务进行了提交后,外层事务不能对其进行回滚,两个事务互不影响。
136- - PROPAGATION_NESTED:外层事务的回滚可以引起内层事务的回滚。而内层事务的异常并不会导致外层事务的回滚。
134+ ### 传播机制
135+ 共有七种传播机制,大致上分为三类:
136+ 1 . 支持当前事务
137+ 1 . REQUIRED:如果存在当前事务,加入该事务,否则创建新事务执行
138+ 2 . SUPPORTS:如果存在当前事务,加入该事务,否则以非事务的方式执行
139+ 3 . MANDATORY:如果存在当前事务,加入该事务,否则抛出异常
140+ 2 . 不支持当前事务
141+ 1 . REQUIRES_NEW:如果存在当前事务,暂时挂起该事务,并且创建新事物执行。** 内层事务与外层事务就像两个独立的事务一样,一旦内层事务进行了提交后,外层事务不能对其进行回滚,两个事务互不影响。**
142+ 2 . NOT_SUPPORTED:如果存在当前事务,暂时挂起该事务,否则以非事务的方式执行
143+ 3 . NEVER:如果存在当前事务,抛出异常,否则以非事务的方式运行
144+ 3 . 嵌套事务(NESTED):如果存在当前事务,则创建新事物作为当前事务的嵌套事务执行,否则等价于REQUIRED。** 外层事务的回滚可以引起内层事务的回滚。而内层事务的异常并不会导致外层事务的回滚。**
145+
146+ ![ ] ( https://raw.githubusercontent.com/CompetitiveLin/ImageHostingService/picgo/imgs/202411111929924.png )
137147
138148### 事务失效
139149
You can’t perform that action at this time.
0 commit comments