库调多了,都忘了最基础的概念《Mysql 相关知识》
🍁 作者:知识浅谈,CSDN 博客专家,阿里云签约博主,InfoQ 签约博主,华为云云享专家
📌 擅长领域:全栈工程师、爬虫、ACM 算法
💒 公众号:知识浅谈
🤞拿下,拿下🤞
温馨提醒:这个有点多,请仔细看下去
🎈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 部分基础,希望有所帮助。
版权声明: 本文为 InfoQ 作者【知识浅谈】的原创文章。
原文链接:【http://xie.infoq.cn/article/9c21e2230eafe4f6b7108c30b】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论