MySQL DBA面试常见问题总结--索引,事务,存储引擎,优化等
可重复读隔离级别解决了上面不可重复读的问题(看名字也知道),但是仍然有一个新问题,就是 幻读,当你读取id> 10 的数据行时,对涉及到的所有行加上了读锁,此时例外一个事务新插入了一条id=11的数据,因为是新插入的,所以不会触发上面的锁的排斥,那么进行本事务进行下一次的查询时会发现有一条id=11的数据,而上次的查询操作并没有获取到,再进行插入就会有主键冲突的问题. (4) SERIALIZABLE(可串行化) 这是最高的隔离级别,可以解决上面提到的所有问题,因为他强制将所以的操作串行执行,这会导致并发性能极速下降,因此也不是很常用. 4. Innodb默认使用的是哪种隔离级别呢? InnoDB默认使用的是可重复读隔离级别. 5. MySQL都有哪些锁呢?像上面那样子进行锁定岂不是有点阻碍并发效率了? 从锁的类别上来讲,有共享锁和排他锁。
MyISAM支持表锁,InnoDB支持表锁和行锁,默认为行锁
6. 锁的优化策略
不能将锁的粒度过于细化,不然可能会出现线程的加锁和释放次数过多,反而效率不如一次加一把大锁。 三、存储引擎 1. MySQL支持哪些存储引擎? MySQL支持多种存储引擎,比如InnoDB,MyISAM,Memory,Archive等等.在大多数的情况下,直接选择使用InnoDB引擎都是最合适的,InnoDB也是MySQL的默认存储引擎. 2. InnoDB和MyISAM有什么区别?
四、优化 1. 超大分页怎么处理? (编辑:西安站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |