Mysql常见面试题(陆续更新中)...

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.Mysql的技术特点是什么?

答:Mysql数据库软件是一个客户端或服务器系统,其中包括:支持各种客户端程序和库的多线程SQL服务器、不同的后端、广泛的应用程序编程接口和管理工具。

3.Heap表是什么?

答:(1)BLOB或TEXT字段是不允许的

(2)只能使用比较运算符=,<,>,=>,=<

(3)HEAP表不支持AUTO_INCREAMENT

(4)索引不可为null

 4.Mysql服务器默认端口是什么?

答:3306

 5.与oracle相比,Mysql有什么优势?

答:(1)MySQL是开源软件,随时可用,无需付费

(2)MySQL是便携式的

(3)带有命令提示符的GUI

(4)使用MySQL查询浏览器支持管理

6.如何区分float和double的区别

答:(1)浮点数以8位精度存储在float中并且有四个字节

(2)浮点数存储在double中,精度为18位,有八个字节

7.区分CHAR_LENGTH和LENGTH?

答:(1)Char_length是字符数,而length是字节数。

(2)latin字符的这两个数据是相同的,但是对于Unicode和其他编码,他们是不同的。

8.请简洁描述MySQL中InnoDB支持的四种事务隔离级别名称,以及逐级之间的区别?

Read uncommitted :读到未提交数据

在该隔离级别,所有事务都可以看到其他未提交事务的执行结果。本隔离级别很少用于实际应用,因为他的性能也不比其他级别好多少。读取未提交的数据也被称之为脏读。

Read committed:脏读,不可重复读

这是大多数数据库系统默认隔离级别(但不是MySQL默认的),它满足了隔离的简单定义:一个事务只能看见已经提交事务所做的改变。这种隔离级别也支持所谓的不可重复读。

Repeatable read:可重读

这是MySQL默认的事务隔离级别,它确保同一事务的多个实例在并发读取数据时,会看到同样的数据行。不过理论上,这会导致另一个棘手的问题,幻读。简单的说,幻读指当用户读取某一范围的数据行时,另一个事务又在该范围内插入了新行,当用户再读取该范围的数据行时,会发现有新的幻影行 InnoDB和Falcon存储引擎通过多版本并发控制(MVCC Multiversion Concurrency Control 间隙锁)机制解决了该问题。注:其实多版本只是解决不可重复读问题,而加上间隙锁(也就是这所谓的并发控制)才解决了幻读问题

serializable:串行事务

这是最高的隔离级别,它通过强制事务排序,使之不可能相互冲突,从而解决幻读问题。简言之它是在每个读的数据行上加上共享锁。在这个级别,可能导致大量的超时现象和锁竞争。

猜你喜欢

转载自blog.csdn.net/killerskyting/article/details/86492274
今日推荐