🍁 作者:知识浅谈,CSDN博客专家,阿里云签约博主,InfoQ签约博主,华为云云享专家
📌 擅长领域:全栈工程师、爬虫、ACM算法
💒 公众号:知识浅谈
🔥 联系方式vx:zsqtcc
🤞拿下,拿下🤞
温馨提醒:这个有点多,请仔细看下去
🎈MySQL 常用引擎有哪些?
Innodb:5.7之后默认的,支持事务,索引,表级锁行级锁,外键等,文件包含两个文件:表结构文件,索引和数据文件。
MyIsam:不支持事务,支持非聚簇索引,只支持表级锁,不支持外键,文件包括3个文件:表结构文件,索引文件,数据文件。
memory:内存型数据库引擎,所有的数据都存储在内存中,因此它的读写效率很高,但 MySQL 服务重启之后数据会丢失。
🎈delete、drop、truncate有什么区别?
- delete:DML数据库管理语言,执行后可以回滚。
drop,truncate:DDL数据库定义语言,执行后不可回滚。 - drop会删除表的结构及其所依赖的约束、索引等。
- truncate只能作用于表;delete,drop可作用于表、视图等。
- truncate会重置表的自增值。
🎈聚簇索引和非聚簇索引有什么区别?
聚簇索引:把索引文件和数据文件存储在一起。
非聚簇文件:索引文件和数据文件分开存储,索引文件中存储的是数据文件的地址。
🎈聚簇索引=主键索引吗?
不等于,主键索引是聚簇索引的一种,如果一个数据表中的有主键,那么主键索引就等于聚簇索引,因为一个表中只能有一个聚簇索引。如果表中没有主键,则找第一个唯一索引作为聚簇索引,如果没有唯一索引,则就隐式创建一个主键索引为聚簇索引。
🎈一个表中可以有多个自增列吗?
我们一般在数据库中设置自增的方法是使用auto_increment 修饰相应的字段之后就是一个自增字段了。
- 这个问题和主键一样一个表中只能有一个自增列,
- 另外,自增列的字段类型只能为整数类型,因为涉及到自增,
- 还有就是设置的字段要和key一起使用,像是主键,外键,唯一键这种。
🎈服务器重启,自增 id 会被重置吗?
这个我们经常涉及到的但却没有注意过。
MyISAM和Innodb是有区别的。
- Myisam:因为自增id是存储在文件中的,所以重启也不会被重置。
- Innodb:8.0之前,是每次取出最大值作为自增的开始位置,但是8.0之后是使用的redolog记录,重启后不会丢失,重启之后就可以把redolog中的记录值和数组的最大值比较取最大值作为自增坐标。
🍚总结
以上为mysql部分基础,希望有所帮助。