职场面试题总结(25)---MYSQL、如何区分FLOAT和DOUBLE、myisamchk是用来做什么的、可以使用多少列创建索引、Mysql中有哪几种锁

83 阅读2分钟

1、一张表,里面有ID自增主键,当insert了17条记录之后,删除了第15,16,17条记录,再把Mysql重启,再insert一条记录,这条记录的ID是18还是15?

(1)如果表的类型是MyISAM,那么是18

因为MyISAM表会把自增主键的最大ID记录到数据文件里,重启MySQL自增主键的最大ID也不会丢失。

(2)如果表的类型是InnoDB,那么是15

InnoDB表只是把自增主键的最大ID记录到内存中,所以重启数据库或者是对表进行OPTIMIZE操作,都会导致最大ID丢失。

2、如何区分FLOAT和DOUBLE

以下是FLOAT和DOUBLE的区别: 浮点数存储在FLOAT中,精度为8位,有四个字节。 浮点数存储在DOUBLE中,精度为18位,有八个字节。

3、myisamchk是用来做什么的?

它用来压缩MyISAM表,这减少了磁盘或内存使用。

4、federated表是什么?

federated表,允许访问位于其他服务器数据库上的表。

5、如果一个表有一列定义为TIMESTAMP,将发生什么?

每当行被更改时,时间戳字段将获取当前时间戳。

6、列设置为AUTOINCREMENT时,如果在表中达到最大值,会发生什么情况?

停止递增,任何进一步的插入都将产生错误,因为密钥已被使用。

7、可以使用多少列创建索引?

任何标准表最多可以创建16个索引列。

8、MYSQL数据表在什么情况下容易损坏?

服务器突然断电导致数据文件损坏。 强制关机,没有先关闭mysql服务等。

9、Mysql中有哪几种锁?

MyISAM支持表锁,InnoDB支持表锁和行锁,默认为行锁表级锁:开销小,加锁快,不会出现死锁。锁定粒度大,发生锁冲突的概率最高,并发量最低

行级锁:开销大,加锁慢,会出现死锁。锁力度小,发生锁冲突的概率小,并发度最高