存储模型与数据分布

内存数据库和面向磁盘的数据库的存储模型与数据分布差别不大(?)

字节对齐

注意元组的字节对齐以便Cache的读写而不需要进行什么额外操作。


未经处理的字节对齐.png

在这里要读cdate的时候可能会需要进行额外的读,为了读完成的cdate需要读第一个第二个两个word;或者随机读,(可能从一个word中间往后读64bit?);或者出错,异常

要解决这个问题,可以

  1. Padding,不满一个word的占一个word,剩下的空间空着。
  2. 重新排序,对于空的地方考虑和后面的属性共用,如上面的id和zipcode一起占一个word

存储模型

行存储和列存储

行存储 N-ary storage model(NSM)

OLTP 方便写
用的是Tuple-at-a-time 迭代器模型

物理实现上有两种选择:基于堆的表,元组乱序存放在堆中;基于索引的表,元组存在主键索引中,是有序的(主键索引和聚集索引有什么区别①)。

优点:方便插入更新和删除;对于需要整个元组的查询很方便;能用面向索引的物理存储结构;
缺点:对于只查找部分属性的查询来说额外占了很多空间

列存储Decomposition storage model(DSM)

用vector-at-a-time迭代器模型

对于元组属的区分,两种方法:定长偏移,所有的属性都是同样的长度;嵌入元组id,每个属性的存储实际是两列,元组id+对应的属性

优点:查询时只读需要的数据节省空间;因为同一个属性存的东西也差不多,便于压缩;
缺点:由于一个元组被分割了,查询整个元组、插入、更新、删除都慢

混合存储模型

数据第一次进入数据库是热数据,一个最新插入的元组很有可能马上需要更新;元组越老,更新频率越低,一些情况下,一个元组只会和其他元组一起被访问。
基于以上事实,考虑把刚插入或更新的数据用行存储,老的数据用列存储,也就是混合存储模型。
两种模型:

  1. Separate Execution Engines:对于NSM和DSM用不同的特殊优化的执行器;最终需要把两个结果合并;如果一个事务在两个都进行操作了,需要考虑同步问题(如用2PL)。
    Fractured Mirrors:存一个DSM的自动更新的镜像,所有的更新都进到NSM中,之后再copy到DSM中


    Fractured Mirrors.png

    Delta Store:更新存在NSM表中,后台线程把更新再迁移到DSM中。


    Delta Store.png

此外还需要考虑那些数据要存到DSM中,谁判定,怎么判定,什么时候存。

目录

几乎所有的DBMS都存自己的目录,引导目录表的特殊代码。

Schema Changes

  • 加一列:NSM存到新的地方;DSM加一个新的空间column segment
  • 去掉一列:NSM可以存到新的地方也可以标注这一列无效;DSM直接把这一列删掉释放内存。

索引的创建:先扫描整个表,产生索引,记录在构建索引过程中的其他事物对这个表做出的修改;扫描结束后,锁住表,然后解决在扫描开始后发生的修改(写入到索引上)。
索引的删除:从目录中逻辑删除。而那些还在用这个索引的事务继续用,而且仍需要更新索引(仍要保证此时事务间的一致性)。


①主键索引和聚集索引:聚集索引指的是物理的存储顺序,但主键索引是在主键上构建的索引(和其他在非唯一的属性上构建的索引没有区别)。在相当多的数据库中,如Mysql的innodb中,主键索引和聚集索引确实是等价的。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,376评论 6 491
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,126评论 2 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 156,966评论 0 347
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,432评论 1 283
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,519评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,792评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,933评论 3 406
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,701评论 0 266
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,143评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,488评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,626评论 1 340
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,292评论 4 329
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,896评论 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,742评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,977评论 1 265
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,324评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,494评论 2 348