ENGINE=INNODB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8;1.ENGINE=INNODB 表示将数据库的引擎设置为InnoDB,从MySQL 5.6开始默认使用该引擎。 2.AUTO_INCREMENT=10 表示自动增长的起始值为10 3.DEFAU ...
分类:
数据库 时间:
2020-01-28 17:49:46
阅读次数:
87
mysql的隔离机制是可重复读,但实际上操作效果和串行化类似, mysql执行begin后不会启动事务, 而是在执行begin之后继续执行下一个语句时,才启动的事务,在information_schma.innodb_trx中添加一条记录, commit后删除该记录。 1、务的特性:原子性、一致性、 ...
分类:
其他好文 时间:
2020-01-28 17:25:19
阅读次数:
72
mysql按照某一字段去重,并显示其他字段信息。有时候会有一些这样的需求,就是按照sql中的某一列值去重,还要显示其他字段的信息。用distinct进行去重时不能显示整行的信息,对这种需求显然难以满足。 ...
分类:
数据库 时间:
2020-01-28 17:19:02
阅读次数:
372
Mysql是使用B+树作为索引的数据结构,Mysql有两种不同的数据存储引擎:MYISAM 和 INNODB,在Mysql5.5版本之前采用的是MYISAM,5.5之后采用的是INNODB 首先看看mysql是怎么保存数据的 在/var/lib/mysql这个目录下保存的是所有的数据库 使用MYIS ...
分类:
数据库 时间:
2020-01-28 13:51:09
阅读次数:
108
redo log 和 bin log redo log 是innodb引擎特有,当有一条记录需要更新时,innodb先把记录写到redo log中,并更新内存,此时更新完成, 同时,innodb会在适当的时候把这个操作记录更新到磁盘中。 binlog(归档日志)是server层的日志 这两种日志有以 ...
分类:
数据库 时间:
2020-01-28 12:29:06
阅读次数:
86
如果创建了索引(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