![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
mysql
格子衬衫~
这个作者很懒,什么都没留下…
展开
-
MySQL的索引结构是什么样的?聚簇索引和非聚簇索引又是什么?
B+树:1、非叶子节点不存储数据,只进行数据索引。3、每个叶子节点都存有相邻叶子节点的指针。B-树:1、B-树的每个非叶子节点的子节点个数都不会超过D(这个D就是B-树的阶)2、所有的叶子节点都在同一层。->将name上的索引升级成为(name,sex)的联合索引。二叉树:每个节点最多只有两个子节点,左边的子节点都比当前节点小,右边的子节点都比当前节点大。3每个叶子节点都是黑色的空节点。5从任一节点到其每个叶子节点的所有路径都包含相同的黑色节点。二叉树-》AVL树-》红黑树-》B-树-》B+树。原创 2022-09-29 18:35:47 · 232 阅读 · 0 评论 -
什么是脏读、幻读、不可重复读?要怎么处理?
1、脏读:在修改时加排他锁,直到事务提交才释放。读取时加共享锁,读完释放锁。:在一个事务过程中,用同样的操作查询数据,得到的记录数不相同。这些问题都是MySQL进行事务并发控制时经常遇到的问题。2、不可重复读:读数据时加共享锁,写数据时加排他锁。:在事务进行过程中,读到了其他事务未提交的数据。处理的方式有很多种:加锁、事务隔离、MVCC。在一个事务过程中,多次查询的结果不一致。3、幻读:加范围锁。原创 2022-09-28 12:40:34 · 1457 阅读 · 0 评论 -
简述mysql中索引类型及对数据库的性能的影响
通过建立倒排索引,可以极大的提升检索效率解决判断字段是否包含的问题,是目前搜索引擎使用的一种关键技术。索引需要占物理空间,除了数据表占数据空间之外,每一个索引还要占一定的物理空间,如果要建立聚簇索引,那么需要的空间就会更大,如果非聚集索引很多,一旦聚集索引改变,那么所有非聚集索引都会跟着变。是一种特殊的唯一索引,在一张表中只能定义一个主键索引,主键用于唯一标识一条记录,使用关键字PRIMARY KEY 来创建。通过使用索引,可以在查询的过程中,使用优化隐藏器,提高系统的性能。可以保证数据记录的唯一性。原创 2022-09-28 10:51:44 · 389 阅读 · 0 评论 -
简述MylSAM和InnoDB的区别
一个InnoDb引擎存储在一个文件空间(共享表空间,表大小不受操作系统控制,一个表可能分布在多个文件里),也有可能为多个(设置为独立表空,表大小受操作系统文件大小限制,一般为2G),受操作系统文件大小的限制;采用非聚集索引,索引文件的数据域存储指向数据文件的指针。辅索引与主索引基本一致,但是辅索引不用保证唯—性。支持ACID的事务,支持事务的四种隔离级别;不支持事务,但是每次查询都是原子的;支持表级锁,即每次操作是对整个表加锁;一个MYISAM表有三个文件:索引文件、表结构文件、数据文件;原创 2022-09-28 10:36:23 · 353 阅读 · 0 评论 -
ACID靠什么保证的?
如果前面 prepare 成功,bin1og 写盘,再继续将事务日志持久化到 bin1og,如果持久化成功,那么、工nnoDB事务则进入commit状态(在 redo log里面写一个 commit记录)D持久性由内存+redo log来保证,mysql修改数据同时在内存和redo log记录这次操作,宕机的时候可以从redolog恢复。A原子性由undo log日志保证,它记录了需要回滚的日志信息,事务回滚时撤销已经执行成功的sql。C一致性由其他三大特性保证、程序代码要保证业务上的一致性。原创 2022-09-28 10:19:10 · 131 阅读 · 0 评论 -
事物的隔离级别
用户开启事务读取id=1用户,查询到age=10,再次读取发现结果=20,在同一个事务里同一个查询读取到不同的结果叫做不可重复读。用户本来应该读取到id=1的用户age应该是10,结果读取到了其他事务还没有提交的事务,结果读取结果age=20,这就是脏读。串行,一般是不会使用的,他会给每一行读取的数据加锁,会导致大量超时和锁竞争的问题。可重复复读,这是mysql的默认级别,就是每次读取结果都一样,但是有可能产生幻读。读未提交,可能会读到其他事务未提交的数据,也叫做脏读。原创 2022-09-28 10:12:49 · 114 阅读 · 0 评论 -
mysql锁的类型有哪些
如果当事务A加锁成功之后就设置一个状态告诉后面的人,已经有人对表里的行加了一个排他锁了,你们不能对整个表加共享锁或排它锁了,那么后面需要对整个表加锁的人只需要获取这个状态就知道自己是不是可以对表加锁,避免了对整个索引树的每个节点扫描是否加锁,而这个状态就是意向锁。也属于行锁的一种,并且它是INNODB的行锁默认算法,总结来说它就是记录锁和间隙锁的组合,临键锁会把查询出来的记录锁住,同时也会把该范围查询内的所有间隙空间也会锁住,再之它会把相邻的下一个区间也会锁住。基于锁的状态分类:意向共享锁、意向排它锁。原创 2022-09-28 09:39:27 · 108 阅读 · 0 评论 -
mysql索引的数据结构,各自优劣
如果是范围查询检索,这时候哈希索引就毫无用武之地了,因为原先是有序的键值,经过哈希算法后,有可能变成不连续的了,就没办法再利用索引完成范围查询检索;如果是范围查询检索,这时候哈希索引就毫无用武之地了,因为原先是有序的键值,经过哈希算法后,有可能变成不连续的了,就没办法再利用索引完成范围查询检索;索引的数据结构和具体存储引擎的实现有关,在MySQL中使用较多的索引有Hash索引,B+树索引等,InnoDB存储引擎的默认索引实现为:B+树索引。因此,B+树索引被广泛应用于数据库、文件系统等场景。原创 2022-09-28 08:41:24 · 290 阅读 · 0 评论 -
mysql聚簇和非聚簇索引的区别
表数据存储在独立的地方,这两颗B+树的叶子节点都使用一个地址指向真正的表数据,对于表数据来说,这两个键没有任何差别。在聚簇索引之上创建的索引称之为辅助索引,辅助索引访问数据总是需要二次查找,非聚簇索引都是辅助索引,像复合索引、前缀索引、唯一索引,辅助索引叶子节点存储的不再是行的物理位置,而是主键值。·聚簇索引:将数据存储与索引放到了一块、并且是按照一定的顺序组织的,找到索引也就找到了数据,数据的物理存放顺序与索引顺序是一致的,即:只要索引是相邻的,那么对应的数据一定也是相邻地存放在磁盘上的。原创 2022-09-28 08:16:25 · 401 阅读 · 0 评论 -
mysql读写分离
索引用来快速地寻找那些具有特定值的记录。如果没有索引,一般来说执行查询时遍历整张表。4.在查询的时候,先拿到倒排表内容,再取出数据地址链,从而拿到具体数据。索引的原理:就是把无序的数据变成有序的查询。1.把创建了索引的列的内容进行排序。3.在倒排表内容上拼上数据地址链。2.对排序结果生成倒排表。原创 2022-09-28 08:05:00 · 117 阅读 · 0 评论 -
mysql读写分离
mysql读写分离原创 2022-09-28 08:01:28 · 147 阅读 · 0 评论 -
谈一下MySQL中的死锁
通过innodblockwait_timeout来设置超时时间,一直等待直到超时;发起死锁检测,发现死锁之后,主动回滚死锁中的某一个事务,让其它事务继续执行。死锁是指两个或两个以上的进程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁。InnoDB Lock Monitor打开锁监控,每15s输出一次日志。使用完毕后建议关闭,否则会影响数据库性能。使用命令show engine innodb status查看最近的一次死锁。原创 2022-09-27 22:31:26 · 117 阅读 · 0 评论 -
请说下事务的基本特性
2.一致性指的是数据库总是从一个一致性的状态转换到另外一个一致性的状态。比如A转账给B100块钱,假设中间sql执行过程中系统崩溃A也不会损失100块,因为事务没有提交,修改也就不会保存到数据库。1.事务应该具有4个属性:原子性、一致性、隔离性、持久性。这四个属性通常称为ACID特性。原子性指的是一个事务中的操作要么全部成功,要么全部失败。3.隔离性指的是一个事务的修改在最终提交前,对其他事务是不可见的。持久性指的是一旦事务提交,所做的修改就会永久保存到数据库中。原创 2022-09-27 22:05:29 · 128 阅读 · 0 评论 -
MylSAM和InnoDB的区别是什么?
聚簇索引的文件存放在主键索引的叶子节点上,因此 InnoDB必须要有主键,通过主键索引效率很高。因此,主键不应该过大,因为主键太大,其他索引也都会很大。而MyISAM是非聚集索引,数据文件是分离的,索引保存的是数据文件的指针。主键索引和辅助索引是独立的。5.InnoDB最小的锁粒度是行锁,MyISAM最小的锁粒度是表锁。而MylSAM用一个变量保存了整个表的行数,执行上述语句时只需要读出该变量即可,速度很快;而MylSAM用一个变量保存了整个表的行数,执行上述语句时只需要读出该变量即可,速度很快;原创 2022-09-27 22:00:01 · 490 阅读 · 0 评论 -
sql文件导入报错[ERR] 1273 - Unknown collation: ‘utf8mb4_0900_ai_ci‘解决办法
mysl原创 2022-09-12 15:07:00 · 255 阅读 · 0 评论 -
Mysql设置创建时间create_time,更新时间update_time字段
Mysql设置创建时间create_time,更新时间update_time字段原创 2022-08-13 11:37:55 · 2996 阅读 · 0 评论