事务基本概念

ACID特性

  1. 原子性:构成事务的所有操作要不全部执行成功,要么全部执行失败,不可能出现部分成功,部分失败的情况
  2. 一致性:在事务执行之前和执行之后,数据完整性约束始终保持一致的状态。(比较重要,在后面章节将重点介绍)
  3. 隔离型:并发执行的两个事务之间互不干扰。
  4. 持久性:事务对数据的更改操作将会被持久化道数据库中。
    Read more »

请区分这些一致性

  1. 数据库ACID中的consistency:这里的一致性是指在数据库系统中的完整性约束没有被破坏,例如主键、外键、触发器、check等约束,或者用户程序中定义的一致性条件。
  2. CAP理论的一致性:强一致性,所有节点在同一时刻具有相同的值,都是最新的数据副本。这里的一致性其实可以看作一致性模型的一种“线性一致性”。
  3. 一致性模型:在并发编程中,系统和开发这之间的一种约定,如果开发者遵循某些规则,那么执行读操作和写操作的结果是可预测的,所谓“可预测”,对应了程序逻辑的正确性。

本次阐述的一致性均代指一致性模型中的一致性。

Read more »

数据库开发学习资料

SQL中的多维数据查询

  • 多维数据可存储在传统的关系数据库中
  • 需要将许多查询表达为SQL形式,例如部分匹配查询,范围查询,最近邻查询,where-am-i查询
    Read more »

Undo & Redo

  • Undo:移除一个终止的事务的影响
  • Redo:重新执行一个事务进行持久化
    Read more »

关键点

  • 数据库中的table不能完全放到内存中
  • 计算得到的中间结果不能完全放入内存中
    Read more »

存储层次

  • tips:在数据库存储上尽量不要使用mmap,这会带来内存/并发等一系列问题,会成为系统瓶颈。
    Read more »

并行处理模型

  • Process per DBMS Worker
    • 使用一个进程处理一个请求
    • 使用共享内存对全局数据进行共享,如buffer pool,不用将相同的page加载两次
    • 单进程奔溃不会导致整个系统崩溃
  • Process Pool
    • 使用进程池来处理请求
    • 对cpu缓存不友好
    • 减少了创建销毁进程开销
  • Thread per DBMS Worker
    • 单进程多线程
    • 线程崩溃导致进程崩溃
    • 上下文切换开销很小
    • 不需要管理共享内存
      Read more »