1. MySQL InnoDB、Mysaim的特点?
a. InnoDB:
1. 持事务处
2. 持外键
3. 持锁
4. 持FULLTEXT类型的索引(在Mysql5.6已引)
5. 保存表的具体数,扫描表来计算有多少
6. 对于AUTO_INCREMENT类型的字段,必须包含只有该字段的索引
7. DELETE 表时,是的删除
8. InnoDB 把数据和索引存放在表空间
9. 跨平台可直接拷使
10. 表格很难被压缩
b. MyISAM:
1. 持事务,回滚将造成完全回滚,具有原性
2. 持外键
3. 持全搜索
4. 保存表的具体数,带where时,直接返回保存的数
5. DELETE 表时,先drop表,然后重建表
6. MyISAM 表被存放在三个件 。frm 件存放表格定义。 数据件是MYD (MYData) 。 索引件是MYI
(MYIndex)引伸
7. 跨平台很难直接拷
8. AUTO_INCREMENT类型字段可以和其他字段起建联合索引
9. 表格可以被压缩
c. 选择:因为MyISAM相对简单所以在效率上要优于InnoDB.如果系统读多,写少。对原性要求低。那么MyISAM最好
的选择。且MyISAM恢复速度快。可直接备份覆盖恢复。如果系统读少,写多的时候,尤其是并发写的时候。
InnoDB就是选。两种类型都有优缺点,选择那个完全要看的实际类。
2. 锁,表锁;乐观锁,悲观锁?
a. 锁:数据库表中某被锁住。
b. 表锁:整个数据库表被锁住。
c. 乐观锁:顾名思义,就是很乐观,每次去拿数据的时候都认为别会修改,具体实现是给表增加个版本号的字
段,在执update操作时较该版本号是否与当前数据库中版本号致,如致,新数据,反之拒绝。
d. 悲观锁:顾名思义,就是很悲观,每次去拿数据的时候都认为别会修改。读数据的时候会上锁,直到update完成才
释放锁,使悲观锁要注意要锁住整个表。
3. 数据库隔离级别是么?有么作?
1. ISOLATIONREADUNCOMMITTED 这是事务最低的隔离级别,它允许另外个事务可以看到这个事务未提交的数据。
这种隔离级别会产脏读,可重复读和幻读。
2. ISOLATIONREADCOMMITTED 保证个事务修改的数据提交后才能被另外个事务读取。另外个事务能读取该
事务未提交的数据。这种事务隔离级别可以避免脏读出现,但是可能会出现可重复读和幻读。
3. ISOLATIONREPEATABLEREAD 这种事务隔离级别可以防脏读,可重复读。但是可能出现幻读。它除保证个
事务能读取另个事务未提交的数据外,还保证避免可重复读。
4. ISOLATION_SERIALIZABLE 这是花费最代价但是最可靠的事务隔离级别。事务被处为顺序执。除防脏读,
可重复读外,还避免幻读。