• MySQL笔记系列:MySQL架构


    • MySQL逻辑架构
           
    连接管理与安全性:
    1、MySQL会为每一个客户端连接分配一个线程,这个连接的查询只会在这个单独的线程执行。服务器会负责缓存线程,因此不需要为每一个新建立的连接创建或则销毁线程。
    2、当客户端连接到MySQL服务器时,服务器将对其进行身份认证。认证基于用户名、主机信息和密码,也可以基于SSL的方式进行连接。一旦客户端连接成功,服务器会继续验证该客户端是否具有执行某个特定查询的权限。
    优化与执行:
    1、MySQL会解析、查询,并创建内部数据结构,然后对其进行各种优化,包括重写查询、决定表的查询顺序,以及选择合适的索引等。用户可以通过特殊的关键字提示(hint)优化器,影响它的决策过程。也可以请求优化器解释优化过程的各个因素,使用户可以指定服务器时如何进行优化决策的,从而去重构查询,优化查询。
    2、对于select语句,在解析查询之前,服务器会先检查查询缓存(query cache),如果能够在其中找到对应的查询,服务器不必再执行查询解析、优化和执行整个过程,而是直接返回查询缓存中的结果。
    • MySQL并发控制
    1、只要有多个查询需要在同一时刻修改数据,都会产生并发控制的问题。
    2、MySQL可以在两个层面实现并发控制:服务器层和存储引擎层。
    MySQL锁管理机制
    MySQL锁的执行流程
    锁粒度
    • 表级锁
    开销小,加锁快,不会出现死锁,锁定粒度大,发生锁冲突的概率最高,并发度最低。
    • 行级锁
    开销稍大,加锁慢。会出现死锁。锁定粒度最小,发生锁冲突的概率最低,并发度也最高。
    • 页面锁
    开销和加锁时间介于表锁和行锁之间,会出现死锁,锁定粒度介于表锁和行锁之间,并发度一般。
    表级锁的锁模式
    • 表共享读锁(Table Read Lock)和表独占锁(Table Write Lock,排它锁)
    • MyISAM在执行查询语句(select)前,会自动给设计的所有表加读锁,在执行更新操作(update、delete、insert等)前,会自动给设计的表加锁。对myisam表进行操作,会有以下情况:
    1、对myisam表的读操作(加读锁),不会阻塞其他进程对同一表的读请求,但会阻塞对同一表的写请求。只有当读锁释放后,才会执行其他进程的写操作。
    2、对myisam表的写操作(加写锁),会阻塞其他进程对同一表的读和写操作,只有当写锁释放后,才会执行其他进程的读写操作。
    • 简而言之,读锁会阻塞写,但是不会阻塞读,写锁则会把读和写都阻塞
     
    • MySQL事务
    事务的ACID特性
    • 原子性(Atomicity)
    一个事务必须被视为一个不可分割的最小工作单元,整个事务中所有操作要么全部提交成功,要么全部回滚。
    • 一致性(Consistency)
    数据库总是从一个一致性状态转换到另一个一致性状态。
    • 隔离性(Isolation)
    通常来说,一个事务所做的修改在最终提交前,对其他事务是不可见的。
    • 持久性(Durability)
    一旦事务提交,则其所做的修改会永久保存到数据库中。即使数据库崩溃,修改的数据也不会丢失。
    • MySQL时间线
    3.23  2001
    4.0    2003
    4.1    2005
    5.0    2006
    5.1    2008
    5.5    2010
    5.6    2013
    MySQL5.6部分新特性
    • 支持多线程复制。事实上市针对每个database开启相应的独立线程。即每个库有一个单独的SQL Thread,如果线上业务中,只有一个database或者绝大多数压力集中在个别database的话,多线程并发复制特性就没有意义了。
    • 启用GTID,无须再知道binlog和POS点,需要知道master的IP、端口、账号和密码即可,因为同步复制是自动的,MySQL通过内部机制GTID自动找点同步。
    • InnoDB全文检索
    • InnoDB统计信息收集更加精准,执行计划更加精准。
    • InnoDB Undo数据从系统表空间独立出来为单独的表空间,SSD
    • InnoDB Redo日志文件大小调整为512G,以前最大为4G
    • 时间类型字段Time、DataTime、Timestamp支持的粒度有秒扩展到

     

    • MySQL开发模式
    • MySQL按照用户群分为社区版和企业版
    • MySQL按照更新发布为:
    GA(General Availability):官方推荐使用版本
    RC (Release Candidate):候选版本,该版本最接近正式版
    Alpha和Bean:测试版,Alpha为内侧版,Bean为公测版
  • 相关阅读:
    python (八)迭代器、生成器、列表推导式
    python (七)装饰器
    HTML基础 (一)
    jQuery(一)
    JavaScript 练习(二)事件
    DOM节点(二)
    git操作顺序
    VUE练习(二)解决Bug
    前端环境VSCode
    JavaScript 基础基础最基础
  • 原文地址:https://www.cnblogs.com/miaokm/p/4160805.html
Copyright © 2020-2023  润新知