长路漫漫,唯键作伴。分享一下近期面试的问题,也是复盘一下。
1、MySQL 事务嵌套 ,内层事务提交后,外层事务会怎样?
Mysql是不支持嵌套事务的,开启了一个事务的情况下,再开启一个事务,会隐式的提交上一个事务。也就是说,如果在内层事务开启的时候,外层事务会自动commit,rollback不会起到作用。
2、MySQL Innodb引擎 锁级别为行锁,SQL语句加排它锁(for update),这两种锁有什么区别,原理是什么?
Innodb支持行级锁,myisam支持表级锁。
行锁分 共享锁 和 排它锁。
共享锁又称:读锁。当一个事务对某几行上读锁时,允许其他事务对这几行进行读操作,但不允许其进行写操作,也不允许其他事务给这几行上排它锁,但允许上读锁。
排它锁又称:写锁。当一个事务对某几个上写锁时,不允许其他事务写,但允许读。更不允许其他事务给这几行上任何锁。包括写锁
上共享锁的写法:lock in share mode
例如: select math from zje where math>60 lock in share mode;
上排它锁的写法:for update
例如:select math from zje where math >60 for update;
3、MySQL 什么情况会出现死锁,怎么解决?
4、int(1)和int(10)的区别是什么?
5、varchar(20)和varchar(100)的区别是什么,为什么varchar(20)要比varchar(100)好一点?
数据库在进行操作的时候,有些情况下会用到临时表,而临时表的内存分配就是根据数据表字段所设置的大小进行分配的,所以说,会节省很多空间。
如果设置varchar(5),而insert进去的值是十个汉字的话,会截取前五个字录入。
2018.6.21 后续待补
网友评论