MySQL数据库的逻辑结构
连接层是大多数C/S架构系统共有的部分,通常包含连接处理、认证授权、安全等工作。
服务层包含MySQL大多数核心服务,包括查询解析、分析、优化、缓存,以及所有内置函数的处理,还有一些跨存储引擎的功能:存储过程,触发器,视图等。
存储引擎层负责MySQL中数据的存储和提取,服务层通过API和存储引擎进行交互,接口统一定义,能够屏蔽不同的存储引擎,存储引擎不解析SQL,不同存储引擎不会进行通信,存储引擎只会简单地响应服务层的请求。
MySQL基础特性
1、自动提交
MySQL默认采用自动提交(autocommit)模式,也就是说,如果不是显示的开始一个事务,每一条SQL语句都会被当做一个事务来执行提交操作。另外,有一些命令,会导致强制执行commit命令提交当前活动事务,比如可能导致大量数据变更的命令alter table,还有lock table等。
2、两阶段锁定协议(two-phase locking protocol)
innoDB采用的是两阶段锁定协议,两阶段锁定协议是说事务将加锁和解锁操作分离,第一阶段只执行加锁操作,不执行解锁操作,第二阶段只执行解锁操作,不执行加锁操作。innoDB的具体做法是在事务中遇到需要加锁的语句就立即加锁,加锁不成功就等待,在执行完加锁语句后,不立即解锁,而是将所有解锁操作全都集中到commit或rollback操作中,这样所有的锁会在同一时刻被释放。由于加锁阶段没有要求顺序,所以两阶段锁定协议是可能产生死锁的。
3、数据库中schema是什么?
schema的翻译是模式,我们在数据库的语境下有其特定的含义,此时很难望文生义,不同数据库系统对schema的定义也是不完全相同,我们从客户端上看到的几乎就是数据库系统对schema的定义。总体上来讲,schema是数据库对象定义(表,视图)的集合,他不包含数据本身,他描述的是各种数据库对象的定义。只是不同数据库对schema包含的范围不同,例如,MySQL中schema就几乎等同于database,Oracle中,schema只包含database的一部分。
4、