1.数据库引擎mysql
1).MyISAM 、 InnoDB 、 MEMPRY 、 ARCHIVE 、 BLACKHOLE 、 CSV A).MyISAM:提供高速存储和检索,以及全文搜索能力 a).表级锁 b).不支持事物 c).每一个表生成三个文件(.frm表结构 / .MYD数据 / .MYI索引) d).查询快 B).InnoDB:具备提交、回滚和崩溃恢复能力的事务安全(ACID兼容)存储引擎 a).表级锁、行级锁 b).支持事物与外键 c).每一个表生成两个文件(.frm表结构 / .idb索引和数据) d).操做快(增删改)
2.数据库索引sql
1).索引定义 A).索引是一种单独的、物理的对数据库表中一列或多列的值进行排序的一种存储结构 B).索引是表中一列或若干列值的集合和相应的指向表中物理标识这些值的数据页的逻辑指针清单 C).索引的做用至关于图书的目录,能够根据目录中的页码快速找到所需的内容。 2).索引类型 A).普通索引 normal B).惟一索引 unique C).主键索引(一种特殊的惟一索引,一个表只能有一个主键,不容许有空值) D).组合索引(最左原则) E).全文索引fulltext 3).聚簇索引的叶子节点就是数据节点,而非聚簇索引的叶子节点仍然是索引节点,只不过有指向对应数据块的指针 A).Innodb引擎主索引文件和数据文件为同一份文件(主键的索引结构中,既存储了主键值,又存储了行数据,这种结构称为"聚簇索引") B).MYISAM引擎的索引文件(.MYI)和数据文件(.MYD)是相互独立的(非聚簇索引)
3.数据库锁数据库
1).MySQL各存储引擎使用了三种类型(级别)的锁定机制: A).表级锁(开销小,加锁快;不会出现死锁;锁定粒度大,发生锁冲突的几率最高,并发度最低) B).页级锁(开销和加锁时间界于表锁和行锁之间;会出现死锁;锁定粒度界于表锁和行锁之间,并发度通常) C).行级锁(开销大,加锁慢;会出现死锁;锁定粒度最小,发生锁冲突的几率最低,并发度也最高) 2).MySQL的表级锁(MyISAM,MEMORY,CSV) A).表共享读锁(Table Read Lock) B).表独占写锁(Table Write Lock) **读操做,不会阻塞其余用户对同一表的读请求,但会阻塞对同一表的写请求** **写操做,则会阻塞其余用户对同一表的读和写操做** 3).MySQL的行级锁(InnoDb,NDBCluster)(InnoDb select根据须要添加锁) A).共享锁(行级) in share mode B).排他锁(行级) for update C).意向共享锁(表级) D).意向排他锁(表级)
4.数据库事务安全
1).ACID A).原子性(Atomicity) B).一致性(Consistency) C).隔离性(Isolation) D).持久性(Durability) 2).隔离等级 A).序列化(serializable) 可避免脏读、不可重复读、幻读的发生 B).可重复读(repeatable read) 可避免脏读、不可重复读的发生。(mysql默认) C).读已提交(read committed) 可避免脏读的发生(oracle默认) D).读未提交(read uncommitted) 3).脏读、不可重复读、幻读 A).脏读(一个事务处理过程里读取了另外一个未提交的事务中的数据) update account set money=money+100 where name=’B’; (此时A通知B) update account set money=money - 100 where name=’A’; B).不可重复读(在对于数据库中的某个数据,一个事务范围内屡次查询却返回了不一样的数据值,这是因为在查询间隔,被另外一个事务修改并提交了) C).幻读(事务非独立执行时发生的一种现象)