2023-09-04 mysql-代号m-并发控制-整体方向-设计

摘要:

mysql与mdb之间的交互是困难的所在, 这之中尤其以并发控制为核心.

并发控制首先在理论上其实并没有太多难以理解的东西, 核心在于具体的实现, 我这么说自然是有原因的, 对于并发控制的理论, 脱离不开事物的一些特性以及利用锁进行串行化, 理论上并不复杂.

但是在实现层面就需要考虑非常多的细节.

本文以项目代号m为依据, 思考一些进行并发控制的整体上的方向.

mdb可以被以模块进行抽象来做并行控制的原因:

一. mdb抽象出了mvc

  1. 从名字上直白的看出是版本控制
  2. 模块内部其实是对事物调度的封装
  3. mvc对于事物的处理提供了简化的接口
    1. 例如在内部处理事务的失败回滚
    2. 以及在内部处理子事物和check point
  4. 上层业务仅调用mvc的接口, 调用流程非常清晰

二. mdb的客户连接也是一个新的线程

  1. 和mysql的处理一致, mysql也是一个客户连接一个新的线程
  2. 这样就可以将mysql的客户线程, 与mdb的客户线程,进行关联
  3. 也就是说将mysql的客户线程, 当作是mdb的客户线程
  4. 这时所需要关注的就是mdb的客户线程对于客户资源的封装问题了

三. mdb中的嵌入式的模块处于用户模块线程管理下层

  1. 在调用嵌入式模块时, 已经处于用户线程内
  2. 这样可以利用mysql的客户线程, 认为是mdb的客户线程, 去调用嵌入式模块
  3. 这里最需要关注的是什么资源只能隶属于单个客户, 必须归属到客户线程内部

代号m的针对mdb的并发控制设计:

一. mysql的客户线程的封装THD

你可能感兴趣的:(mysql,数据库,并发控制)