
mysql
文章平均质量分 51
fldjsaldkfjoeiaf
这个作者很懒,什么都没留下…
展开
-
快照读和当前读
当前读读取的是记录的最新版本(最新数据,而不是历史版本的数据),读取时需要保证其他并发事务不能修改当前记录,所以会对读取的记录进行加锁。快照读 即:snapshot read,官方叫法是:Consistent Nonlocking Reads,即:一致性非锁定读,官方的解释是 :InnoDB 通过 MVCC(多版本控制)将数据库在过去某个时刻的快照应用在查询上,使得:这次查询 只能看到 别的事务在生成快照前提交的数据,而不能看到 别的事务在生成快照后提交的数据或者未提交的数据。update(排他锁)原创 2023-08-23 17:48:57 · 460 阅读 · 0 评论 -
MySQL日志(redo log、binlog)刷盘策略
write(刷盘)指的是MySQL从buffer pool中将内容写到系统的page cache中,并没有持久化到系统磁盘上。取值0:每次提交都将binlog 从binlog cache中 write到磁盘上,而不fsync到磁盘。取值N:每次提交事务都将binlog write到磁盘上,累计N个事务之后,执行fsync。取值1:每次提交事务都将redo log 持久化到磁盘上,也就是write+fsync。取值1:每次提交事务都将binlog fsync到磁盘上。fsync:持久化到磁盘。原创 2022-10-27 18:54:40 · 1041 阅读 · 0 评论 -
事务的基本特性和隔离级别
事务的基本特性和隔离级别事务基本特性ACID分别是:原子性指的是一个事务中的操作要么全部成功,要么全部失败。一致性指的是数据库总是从一个一致性的状态转换到另外一个一致性的状态。比如A转账给B100块钱,假设A只有90块,支付之前我们数据库里的数据都是符合约束的,但是如果事务执行成功了,我们的数据库数据就破坏约束了,因此事务不能成功,这里我们说事务提供了一致性的保证隔离性指的是一个事务的修改在最终提交前,对其他事务是不可见的。持久性指的是一旦事务提交,所做的修改就会永久保存到数据库中。隔离性有4个原创 2021-11-05 17:14:47 · 118 阅读 · 0 评论 -
mysql执行计划怎么看
mysql执行计划怎么看执行计划就是sql的执行查询的顺序,以及如何使用索引查询,返回的结果集的行数EXPLAIN SELECT * from A where X=? and Y=?1。id :是一个有顺序的编号,是查询的顺序号,有几个 select 就显示几行。id的顺序是按 select 出现的顺序增长的。id列的值越大执行优先级越高越先执行,id列的值相同则从上往下执行,id列的值为NULL最后执行。2。selectType 表示查询中每个select子句的类型SIMPLE: 表示此查询原创 2021-10-24 19:54:38 · 332 阅读 · 0 评论 -
mysql主从同步原理
mysql主从同步原理mysql主从同步的过程:Mysql的主从复制中主要有三个线程: master(binlog dump thread)、slave(I/O thread 、SQLthread) ,Master一条线程和Slave中的两条线程。主节点 binlog,主从复制的基础是主库记录数据库的所有变更记录到 binlog。binlog 是数据库服务器启动的那一刻起,保存所有修改数据库结构或内容的一个文件。主节点 log dump 线程,当 binlog 有变动时,log dump 线程读取原创 2021-10-24 19:37:38 · 97 阅读 · 0 评论 -
慢sql优化
在业务系统中,除了使用主键进行的查询,其他的都会在测试库上测试其耗时,慢查询的统计主要由运维在做,会定期将业务中的慢查询反馈给我们。慢查询的优化首先要搞明白慢的原因是什么?是查询条件没有命中索引?是load了不需要的数据列?还是数据量太大?所以优化也是针对这三个方向来的,首先分析语句,看看是否load了额外的数据,可能是查询了多余的行并且抛弃掉了,可能是加载了许多结果中并不需要的列,对语句进行分析以及重写。分析语句的执行计划,然后获得其使用索引的情况,之后修改语句或者修改索引,使得语句可以尽可能的命原创 2021-10-24 19:37:00 · 73 阅读 · 0 评论 -
mysql中索引类型及对数据库的性能的影响
mysql中索引类型及对数据库的性能的影响普通索引:允许被索引的数据列包含重复的值。唯一索引:可以保证数据记录的唯一性。主键:是一种特殊的唯一索引,在一张表中只能定义一个主键索引,主键用于唯一标识一条记录,使用关键字 PRIMARY KEY 来创建。联合索引:索引可以覆盖多个数据列,如像INDEX(columnA, columnB)索引。全文索引:通过建立倒排索引,可以极大的提升检索效率,解决判断字段是否包含的问题,是目前搜索引擎使用的一种关键技术。可以通过ALTER TABLE table_na原创 2021-10-24 19:06:57 · 344 阅读 · 0 评论 -
简述MyISAM和InnoDB的区别
简述MyISAM和InnoDB的区别MyISAM:不支持事务,但是每次查询都是原子的;支持表级锁,即每次操作是对整个表加锁;存储表的总行数;一个MYISAM表有三个文件:索引文件、表结构文件、数据文件;采用非聚集索引,索引文件的数据域存储指向数据文件的指针。辅索引与主索引基本一致,但是辅索引不用保证唯一性。InnoDb:支持ACID的事务,支持事务的四种隔离级别;支持行级锁及外键约束:因此可以支持写并发;不存储总行数;一个InnoDb引擎存储在一个文件空间(共享表空间,表大小不受操作原创 2021-10-24 19:05:11 · 150 阅读 · 0 评论 -
什么是MVCC
什么是MVCC多版本并发控制:读取数据时通过一种类似快照的方式将数据保存下来,这样读锁就和写锁不冲突了,不同的事务session会看到自己特定版本的数据,版本链MVCC只在 READ COMMITTED 和 REPEATABLE READ两个隔离级别下工作。其他两个隔离级别够和MVCC不兼容, 因为 READ UNCOMMITTED总是读取最新的数据行,而不是符合当前事务版本的数据行。而 SERIALIZABLE 则会对所有读取的行都加锁。聚簇索引记录中有两个必要的隐藏列:trx_id:用来存储每原创 2021-10-24 18:41:31 · 162 阅读 · 0 评论 -
ACID靠什么保证的
ACID靠什么保证的A原子性由undo log日志保证,它记录了需要回滚的日志信息,事务回滚时撤销已经执行成功的sqlC一致性由其他三大特性保证、程序代码要保证业务上的一致性I隔离性由MVCC来保证D持久性由内存+redolog来保证,mysql修改数据同时在内存和redo log记录这次操作,宕机的时候可以从redo log恢复InnoDB redo log 写盘,InnoDB 事务进入 prepare 状态。如果前面 prepare 成功,binlog 写盘,再继续将事务日志持久化到 bin原创 2021-10-24 18:40:30 · 551 阅读 · 0 评论 -
锁的类型有哪些
锁的类型有哪些基于锁的属性分类:共享锁、排他锁。基于锁的粒度分类:行级锁(INNODB)、表级锁(INNODB、MYISAM)、页级锁(BDB引擎 )、记录锁、间隙锁、临键锁。基于锁的状态分类:意向共享锁、意向排它锁共享锁(Share Lock)共享锁又称读锁,简称S锁;当一个事务为数据加上读锁之后,其他事务只能对该数据加读锁,而不能对数据加写锁,直到所有的读锁释放之后其他事务才能对其进行加持写锁。共享锁的特性主要是为了支持并发的读取数据,读取数据的时候不支持修改,避免出现重复读的问题。排他锁(原创 2021-10-24 18:38:53 · 2056 阅读 · 0 评论 -
数据结构相关
二叉查找树的特点就是左子树的节点值比父亲节点小,而右子树的节点值比父亲节点大平衡二叉树是基于二分法的策略提高数据的查找速度的二叉树的数据结构特点:(1)非叶子节点最多拥有两个子节点;(2)非叶子节值大于左边子节点、小于右边子节点;(3)树的左右两边的层级数相差不会大于1;(4)没有值相等重复的节点;B树(B-tree)B树和平衡二叉树稍有不同的是B树属于多叉树又名平衡多路查找树(查找路径不只两个),数据库索引技术里大量使用者B树和B+树的数据结构规则:(1)排序方式:所有节点关键字是按递原创 2021-10-24 18:38:16 · 173 阅读 · 0 评论 -
mysql索引相关
索引的基本原理索引用来快速地寻找那些具有特定值的记录。如果没有索引,一般来说执行查询时遍历整表。索引的原理:就是把无序的数据变成有序的查询把创建了索引的列的内容进行排序对排序结果生成倒排表在倒排表内容上拼上数据地址链在查询的时候,先拿到倒排表内容,再取出数据地址链,从而拿到具体数据mysql聚簇和非聚簇索引的区别都是B+树的数据结构聚簇索引:将数据存储与索引放到了一块、并且是按照一定的顺序组织的,找到索引也就找到了数据,数据的物理存放顺序与索引顺序是一致的,即:只要索引是相邻的,那么对原创 2021-10-24 18:37:31 · 93 阅读 · 0 评论