![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
MySQL
数据库
向前冲鸭
这个作者很懒,什么都没留下…
展开
-
一条sql语句执行很慢的原因有哪些
一条sql语句执行的很慢的话,可以大体上分两种情况,一种是偶尔执行的慢,一种是总是执行的慢。偶尔执行的慢可能是数据库此时在刷脏页。脏页就是内存中的数据跟磁盘上的数据不一致,数据库先写内存,并把修改操作记录到redo log,等空闲的时候再将redo log中的数据刷新到磁盘上,如果此时redo log 已经满了,那就不得不刷脏页了,或者内存不够,就得需要清除部分内存,如果清除的是干净页,那就可以直接清除,如果是脏页,就得先刷新到磁盘中才能清除。可能是我们要查询的数据表加了锁,此时锁已经被占有,我们拿原创 2020-07-09 21:33:24 · 285 阅读 · 0 评论 -
再谈事务
MySQL的可重复读怎么实现的使用MVCC,多版本并发控制,一种并发控制方式。默认给每一行数据的后面加了两列,一列是创建时间,一列是删除时间,相当于是一个版本号。如果当前事务是select,那就只能查询到创建时间早于当前事务的版本号,删除时间晚于当前事务版本号的记录;如果当前事务是insert,那就将当前事务的版本号分配给新插入的每一行作为创建时间;如果当前事务是delete,那就将当前事务的版本号分配给删除的每一行作为删除时间;如果当前事务是update,那就将当前事务的版本号分配给每一行作原创 2020-06-28 14:03:05 · 140 阅读 · 0 评论 -
mysql优化
先说一下数据库操作数据的过程,客户端先跟数据库建立连接,然后去数据库查询数据,数据库会先查询缓存,如果缓存中有相应的数据,就直接返回结果,如果没有,就会经过分析器,优化器,执行器,然后去存储引擎中查找数据,最后再将查询到的数据返回。所以我们对mysql的优化是在执行器执行之前的分析器和优化器。分析器就是分析sql语句中的符号,字段都是干嘛的,优化器就是对sql语句进行优化。explainmysql优化肯定都会想到先用explain看一下执行计划,看是否跟自己预期的一样,是否有没有用到预期的索引,但是要原创 2020-06-20 08:47:54 · 103 阅读 · 0 评论 -
bin log&redo log&undo log
bin logbin log存储的是insert/delete/update的sql语句;主要功能是复制和恢复,主服务器和从服务器需要保持数据一致,可以通过bin log来同步数据;如果数据库的所有数据都被删除,可以通过bin log来进行恢复,bin log存储的是对所有数据的修改记录。bin log是所有sql都有的,不管用的是什么存储引擎;bin log在事务提交后才记录。redo log存储的是数据的物理变化,比如:在xxx页修改xxx;redo log是为持久化而生,事务中的原创 2020-06-15 13:38:20 · 164 阅读 · 0 评论 -
索引
什么是索引索引是一种特殊的文件,也占据着物理空间,保存着数据库表中所有记录的引用指针;索引也是一种数据结构,是数据库管理系统用于排序的一种数据结构,可以协助快速查询和更新数据,常用的数据结构有hash和BTREE;通俗的来说,索引就是目录,为了快速找到书中的内容,对书中的内容通过索引来建立目录。索引优缺点优点:大大加快了查询的效率;通过使用索引,在查询过程中,可以使用优化隐藏器,提高系统性能。缺点:索引的创建和维护都需要一定的开销,而且在对数据库表中的数据进行增加,删除,修改时,原创 2020-06-14 15:40:56 · 150 阅读 · 0 评论 -
事务
什么是事务事务是不可分割的数据库操作序列,是数据库并发访问的基本单位,其执行结果必定使数据库从一种一致性状态到另一种一致性状态,是逻辑上的操作,要么全部执行成功,要么全部执行失败。事务的四大特性原子性:原子不可在分割,要不全部执行成功,要不全部执行失败;一致性:事务在提交前后,数据应保持一致,多个事务对数据的读取结果应该是一致的;隔离性:多个事务并发访问数据库时,一个事务不会被其它事务所影响;持久性:事务提交后,对数据库数据的改变是持久的。脏读、不可重复读、幻读脏读:一个事务对数据进行原创 2020-06-14 14:30:25 · 226 阅读 · 1 评论