A. 程序员面试宝典之Mysql数据库Innodb引擎的4个隔离级别
题目:请阐述Mysql Innodb引擎的4个隔离级别
难度:三星
面试频率:五星
这道题真的是一道数据库的高频题,数据库题除了索引的原理之外就是这道题的面试频率最高。
1.Read uncommitted(读未提交):,最低的隔离级别,可以一个事务读到其他事务没有提交的数据,也称脏读,这个隔离级别很少人用
2.Read committed(读已提交):相比于读未提交,这个隔离级别只能读到其他事物已经提交了的数据,这个隔离级别用得比较多。但是不是Mysql默认的隔离级别
3.Repeatable read(可重复读): 在读已提交隔离级别中,2次读取同一个变量如果其他事务修改了它的值,会读到的不一样。而在这个隔离级别中,顾名思义,一个事务开始读了。多次读到的值可以保证是一样的
4.Serializable 序列化 在这个隔离级别下,所有的事务都将串行操作,是隔离级别最高的也是效率最低的,很少人用
面试官追问:Innodb引擎默认隔离级别是哪个
答:可重复读
面试官追问:可重复读的实现原理
答:使用了MVCC多版本控制(类似乐观锁),Innodb引擎会给每一行数据加一个版本号信息,当一个事务修改一个数据时会增加它的版本号+1,当一个事务开始的时候会缓存下此时的版本号,后面读取的时候只会读取这个版本号的数据,因此别的事务提交了修改数据的版本号大于它,因此不会被读到
面试官追问:事务的隔离级别如何设置:
答:在Mysql命令行下调用命令 set global.tx_isolation,但这样Mysql重启失效,修改my.cnf来永久设置
面试官追问:可重读读有什么问题
答:会出现幻读,幻读是指事务读取到一个值无法准确继续后续操作。例如读取一个值,没有则插入,但是等插入的时候其他事务已经插入了,这就会导致插入失败,解决办法:sql语句显示加锁 :select xxxx for update,其他事务修改数据则会阻塞
B. sql server 2012 宝典有pdf吗
楼主 是这样的 不用担心 即使是商业用途 问题也不大 很少被查出来的 也不一定去官网下载 2012现在还是蛮好找的 网络就可以 我也装了
不要误导。这里的核心版指的是按核心授权的意思。两个版本功能是相同的,不过核心版限定最多只能使用20个物理CPU核心,如果你知道调度器的话,就知道区别了,核心版最多只能开启20或40个调度器(每个核心一个,对于有超线程技术的CPU是40个调度器)。而企业版则没有这个限制,可以支持操作系统所能支持的最多CPU核心数。
C. SQL Server 2012宝典与SQL Server 2012宝典(第4版)区别,哪个更适合初学者
如果说适合初学者,只要书中不是不要讲高级的东西,哪本书都是可以的,毕竟是入门。
再看上面两本书,名字几乎相同,还以为第二本是第一本的升级版本,但仔细一看,作者不一样,第一本是国人写的,第二本是外国人着的。
我个人比较喜欢外国人写的书,因为外国人写的内容真的是逻辑严谨,循序渐进,有的好书,看着看着,真的可以用“有趣”一词形容。
对比国人写的书,都比较简单,套用其他格式内容。但确实比较适合入门。
所以,这两本书,各有各的好。选哪本,我觉得问题都不大。