mysql 的三层结构
- 第一层: 连接、线程处理
- 第二层: 解析、分析、优化缓存以及所有内置喊出(日期、时间、数字和加密函数)所有跨存储引擎的功能都在这一层实现:存储过程、吃发起、视图
- 第三层包含了存储引擎,存储引擎负责了mysql中数据的存储和提取
mysql 安全保障
连接到mysql服务器时,服务器需要对其进行认证,认证基于用户名、原始主机信息和密码,如果使用了安全套接字(SSL)的方式链接,还可以是使用x.590证书认证,一旦客户端连接成功服务器会继续验证该客户端时候具有执行某个特定查询权限。
mysql的执行
mysql会解析查询,并创建内部数据结构(解析树关键字analze)然后对其进行各种优化,包括重写查询,决定表的读取顺序,以及选择合适的索引
mysql为什么8.0后禁止查询缓存
主要原因:
首先查询缓存的效果取决于缓存的命中率,只有命中缓存的查询才能有改善,因此无法预测其性能
查询缓存的名一个大问题,他是单个互斥锁的保护,在具有多个和内核的服务器,大量查询会导致大连的互斥锁征用
什么是事务
事务就是一组原子行的sql查询或者说一个堵路的工作单元,如果数据库引擎能够成功的对数据库应用该祖查询的全部语句,那么就执行该组查询
也就是说事务内部的语句,要么全部执行成功,要么全部失败。
事务的四大特性
- 原子性:事务所有操作要么全部成功提交,要么全部回滚
- 一致性:数据从一个一致性状态转换到另一个一致性状态
- 隔离性:事务提交前,所做的额修改在最终提交以前,对其他事务是不可见的
- 持久性:一旦事务提交,则其所做的修改就会永久保存到数据库中
隔离级别
- 未提交:事务中的修改,既没有提交对其他事务也都是可见的,事务可以读取为提交的数据,也成为脏读
- 提交都:一个事务从开始直到提交之前,所做的人格修改对其他事务都不可见的,这个给级别有时间也叫做不可重复读,因为两次执行同样的查询,可能会得到不一样的结果。
- 可重复读:是一个数据库事务的隔离级别,他在事务执行期间会对所有引用的行实施锁定
- 幻读:值得是当某个事务在读取某个范围内的记录时,另外一个事务又在该范围内插入新的记录,当之前的事务再次读取该范围的记录时,会差生幻行。
- 可串行:他通过强制事务串行执行,避免了前面所说的幻读问题