高性能mysql(1)

高性能mysql

  • 第一章——Mysql架构与历史

    • 三层架构

      • 第一层——连接层

        • 负责登陆、连接的安全校验认证等
      • 第二层——服务器层

        • 所有核心功能服务都在这一层(解析、分析、优化、缓存、内置函数等等)

          • 并发控制

            • 读写锁
              • 共享锁(读锁)
              • 排他锁(写锁)
            • 锁粒度
              • 表锁:开销小,锁粒度大,并发低,死锁可能性低
              • 行级锁:开销大,锁粒度小,并发高,死锁可能性高
          • 事务(一组原子性的SQL查询,或者说一个独立的工作单元),满足ACID

            • Atomicity(原子性)

              • 事务是不可分割的最小工作单元,事务中的操作要么全成功要么全失败
            • Consistenct(一致性)

              • 数据库总是从一个一致性的状态转换到另外一个一致性状态
            • Durability(持久性)

              • 一旦事务提交,则其所做的修改就会永久保存在数据库中
            • Isolation(隔离性)

              • 一般事务提交之前对其他事务不可见

                • 隔离级别

                  隔离级别 脏读可能性 不可重复度可能性 幻读可能性 加锁读
                  Read Uncommitted(读未提交)
                  Read Committed(读已提交)
                  Repeatable Read(可重复读)
                  Serializable(可串行化)
                  • 脏读:事务可以读取未提交的数据
                  • 不可重复度:两次执行相同查询结果不同
                  • 幻读:当某个事务服务某个范围内的记录是,另外一个事务又在该范围内插入了新的记录,之前事务再次读取该范围记录时,会产生幻行
                • 死锁(死锁检测、死锁超时机制)

                  • 检测到死锁返回错误
                  • 查询时间达到锁等待超时设定时间后放弃锁请求(不太好)
                  • 将持有最少行级排他锁的事务进行回滚(比较好)
                • 事务日志

                  • 预写式日志
                  • 修改数据时,存储引擎只修改表的数据的内存拷贝,再把修改行为记录以追加的方式持久到硬盘上的事务日志中。事务日志持久以后,内存数据在后台会慢慢刷回内存
          • 多版本并发控制(MVCC)

            • 通过保存数据在某个时间点的快照来实现的。可看作是行级锁的一个变种,在很多情况下避免了加锁操作,开销更低。非阻塞读,写操作只锁定必要的行
            • 通过在每行记录后面保存两个隐藏列实现,一个保存了行的创建时的系统版本号,一个保存了行的过期(删除)系统版本号
            • 只在Committed Read和Repeatable Read隔离级别起作用,下面以InnoDB介绍其工作流程
            • 查:只查版本早于当前版本的数据行;行的删除版本要么未定义,要么大于当前事务版本号
            • 增:新插入行以当前系统版本号作为行版本号
            • 删:删除行以当前系统版本号作为行删除标识
            • 改:插入一行新记录以当前系统版本号作为行版本号;同时保存当前系统版本号到原来的行作为行删除标识
      • 第三层——存储引擎层

        • 各种存储引擎(社区偏多、商业偏少)介绍、区别和多版本基准测试
posted @   orangeScc  阅读(29)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示