如果创建了索引(A,B),再创建索引(A)就是荣誉索引,因为索引(A)是索引(A,B)的前缀索引,因此索引(A,B)可以当做索引(A)来使用【仅仅针对B Tree索引来讲】 针对InnoDB,ID为主键,索引(A)可当做 (A,ID)来使用,不用再创建索引(A,ID) 表中的索引越多,则insert ...
分类:
其他好文 时间:
2020-01-28 09:27:38
阅读次数:
82
当一个业务逻辑需要多个sql完成时,如果其中某条sql语句出错,则希望整个操作都退回 使用事务可以完成退回的功能,保证业务逻辑的正确性 事务四大特性(简称ACID) 原子性(Atomicity):事务中的全部操作在数据库中是不可分割的,要么全部完成,要么均不执行 一致性(Consistency):几 ...
分类:
数据库 时间:
2020-01-28 09:14:00
阅读次数:
66
二级索引 聚簇索引:将数据存储与索引放到了一块,找到索引也就找到了数据。具有唯一性,聚簇索引默认是主键,如果表中没有定义主键,InnoDB 会选择一个唯一的非空索引代替。如果没有这样的索引,InnoDB 会隐式定义一个主键来作为聚簇索引。 非聚簇索引:将数据存储于索引分开结构,索引结构的叶子节点指向 ...
分类:
数据库 时间:
2020-01-27 17:15:45
阅读次数:
68
在使用golang go sql driver操作mysql时,往tag表插入一条新数据时,如果插入失败,id仍会自增,插入数据失败次数过多时,id就看起来十分混乱。 所以我就在搜索下原因,发现是InnoDB的机制,大致就是说InnoDB的innodb_autoinc_lock_mode模式下,自增 ...
分类:
数据库 时间:
2020-01-27 15:47:20
阅读次数:
209
上一篇讲到sql提交到存储引擎了,由存储引擎操作内存或磁盘中的数据。 这一篇就开始将接下来的innodb存储引擎是如何处理数据的。 需要执行一条sql: update name=lisi where id =1; 第一步:查询数据 innodb首先需要定位到这条数据所在的位置,如果内存中有则直接定位 ...
分类:
数据库 时间:
2020-01-27 09:31:21
阅读次数:
82
1、redo log(InnoDB引擎特有的日志)1.1、有了 redo log,InnoDB 就可以保证即使数据库发生异常重启,之前提交的记录都不会丢失,这个能力称为 crash-safe。具体来说,当有一条记录需要更新的时候,InnoDB 引擎就会先把记录写到 redo log里面,并更新内存, ...
分类:
数据库 时间:
2020-01-26 23:54:10
阅读次数:
259
锁模块的常见问题 1、MyISAM和InnoDB关于锁方面的区别是什么? 2、数据库事务的四大特性? 3、事务隔离级别以及各级别下的并发访问问题? 4、InnoDB可重复读隔离级别下如何避免幻读? 5、RC、RR级别下的InnoDB的非阻塞读如何实现? 1、MyISAM和InnoDB关于锁方面的区别 ...
分类:
其他好文 时间:
2020-01-26 20:52:40
阅读次数:
84
MyISAM 和 InnoDB 存储引擎的表默认创建的都是 BTREE 索引。默认情况下,MEMORY 存储引擎使用 HASH 索引,但也支持 BTREE 索引。 ...
分类:
数据库 时间:
2020-01-26 17:24:26
阅读次数:
70
MySQL 从 5.0.2 版本开始支持触发器的功能。触发器是与表有关的数据库对象,在满足定义 条件时触发,并执行触发器中定义的语句集合。触发器的这种特性可以协助应用在数据库端 确保数据的完整性。 MySQL 从 5.0.3 开始支持分布式事务,当前分布式事务只支持 InnoDB 存储引擎。一个 分 ...
分类:
数据库 时间:
2020-01-26 17:19:48
阅读次数:
94
MySQL两种常见的存储引擎有:MyISAM 和 InnoDB,两者区别如下: 1、count运算:MyISAM 有缓存表的 meta-data 元数据,元数据包括行数等,因此其做 COUNT(*) 查询时不需要消耗多少资源。而 InnoDB 就没有这个缓存。 2、事务和崩溃后的安全恢复:MyISA ...
分类:
数据库 时间:
2020-01-26 14:32:32
阅读次数:
69