InnoDB支持事务
InnoDB支持外键
判断聚簇索引就是看索引跟数据是否存储在一起,innoDB的索引文件跟数据文件都存在ibd文件中,而myisam的数据文件存放在myd文件中,索引存放在myl文件中。另外innoDB引擎在进行数据插入的时候,数据必须跟索引存放在一起,如果有主键就用,没有就用唯一键,没有唯一键就用6字节的rowid,但是为了避免数据冗余存储,其他的索引的叶子节点中存储的都是聚簇索引的key值,因此innoDB中既有聚簇也有非聚簇,而myisam中只有非聚簇索引。
原子性指的是一个事务中的操作要么全部成功,要么全部失败。
一致性指的是数据库总是从一个一致性的状态转换到另一个一致性的状态。比如A转账给B100块,假设中间sql执行过程中系统崩溃A也不会损失100.因为事务没有提交,修改也不会保存到数据库。
隔离性指的是一个事务的修改在最终提交前,对其他事务是不可见的。
持久性指的是一旦事务提交,所做的修改就会永久保存到数据库中。
脏读:在事务A执行过程中,事务A对数据资源进行了修改,事务读取了事务A修改后的数据。由于某些数据,事务A并没有完成提交,发生了RollBack操作,则事务B读取的数据就是脏数据。 我们将这种读取到另一个事务未提交的数据的现象称之为脏读。
不可重复读:事务B读取了两次数据资源,在这两次读取的过程中事务A修改了数据,导致事务B在这两次读取出来的数据不一致。这种在同一个事务中,前后两次读取的数据不一致的现象就是不可重复度。
幻读:事务B前后两次读取同一个范围的数据,在事务B两次读取的过程中事务A新增了数据,导致事务B后一次读取到前一次查询没有看到的行。幻读和不可重复读有些类似,但是幻读强调的是集合的增减,而不是单条数据的更新。
经常用来查询的字段,出现在where子句中的列
数据量小的表,没必要建立索引
对于长字符串列进行索引,可以使用短索引,指定一个前缀长度,节省空间
定义有外键的列一定要建立索引
更新频繁的字段不适合创建索引
尽量扩展索引,在原有的基础上修改,避免新建索引
定义为text、image和bit的数据类型的列不要建立索引
本文章使用limfx的vscode插件快速发布