MySQL 基础知识

阅读更多
1.MySQL 体系结构:

最上层的 JDBC 相当于一个抽象,针对不同的数据库,编写同样的数据库连接代码,可以连接不同的数据库,例如(MySQL/Oracle/Sybase等)

连接池

然后是在插件化的存储引擎之上的定义语言,解析器,优化器,缓存等.

插件化的存储引擎

文件系统 + 日志

2.存储引擎:

InnoDB: 支持事务,行锁设计、支持外键、默认读不会产生锁
MyISAM: 不支持事务,表锁设计,支持全文索引,MyISAM 的缓冲池只缓存索引文件
NDB: 数据全部放在内存中,用于集群
Memory: 将表中的数据放在内存中,如果重启或崩溃,数据丢失,默认使用哈希索引,只支持表锁
Archive:只支持 select 和 insert 操作
Maria 存储引擎表是新开发的引擎,其设计目的主要是替代原来的 MyISAM 存储引擎. Maria 存储引擎的特点是:支持缓存数据和索引文件,应用了行锁设计,提供了 MVCC 功能,支持事务和非事务的安全选项,以及更好的 BOLB 字符类型的处理性能.

连接 MySQL 本质上是进程间的通讯.


索引:

聚集索引:按照每张表的主键构造 B+ 树
辅助索引:叶子节点不包含行记录的全部数据
联合索引:对表的多个列进行索引
覆盖索引:从辅助索引能查询到记录就不需要查询聚集索引中的记录
哈希索引:只能用来搜索等值的查询


事务的隔离级别:

读未提交数据
读已提交数据
可重复读(MySQL 通过 MVCC 解决幻读)
可串行化

分布式事务:

DB1,DB2,DB3
Application
TM

这三种角色,分布式事务是两段提交,第一阶段DB1,DB2,DB3 告诉 TM 我准备好了,第二阶段 TM 告知 DB1,DB2,DB3 是 commit 还是 rollback. 一旦 DB1,DB2,DB3 中的其中一个说显示不能提交,则全部回滚.

说明:数据库系统实现的其实是一个小型的操作系统,一样设计到页面的换入换出.

你可能感兴趣的:(MySQL)