管理进化

数据库怎么保存


数据库保存方法有:1.堆。数据按照向后插入的方法,一直堆积在文件末尾;2.索引组织,一般索引组织表使用B+作为构造方法。我们常见的MySQL Cluster等都是索引组织表、MyISAM为堆表,MongoDB的组织结构为堆。

1.保存方法-堆

数据按照向后插入的方法,一直堆积在文件末尾,使用索引结构访问数据时,将在索引中得到数据指针,然后获取数据,当有数据删除时,将其从对应位置删除,对于频繁更新的堆表,需要定期进行优化,使用堆表,会导致数据顺序访问原则被打破(在DBMS中做了访问优化,性能得到部分提升),由于没有填充因子,在相同压缩算法下,空间能得到很大的节省,堆表很适合于顺序范围访问,如数据仓库等业务场景。

2.保存方法-索引组织

一般索引组织表使用B+作为构造方法,整个结构如同一个倒挂的数(从数据访问流来看),路由信息存放在树枝上,所有的数据存放在叶子节点,通过双向指针将所有叶子根据顺序方式串联起来,由于时空访问局限特性,这能很大提升数据性能,DBMS根据访问存取路径访问及构造数据,访问路径深度直接影响了性能,一般建议访问路径控制在4以内(小于或等于3),原因是由于访问多层路径需要消耗更高的代价及维护索引树代价越来越昂贵。

我们常见的Innodb、MySQL Cluster等都是索引组织表、MyISAM为堆表,MongoDB的组织结构为堆。

拥有ACID属性的数据库拥有索引维护功能,MyISAM存储引擎以及MongoDB由于是堆组织结构,且没有ACID的控制,会导致元数据与索引不一致的问题,直接导致数据存取失效,造成数据不一致,但由于没有ACID的要求,更新速度将得到很大地提升,MyISAM存储引擎需要定期进行一致性check,正是因为不具有ACID属性,MyISAM存储引擎需要为数据更新锁定表,造成大并发下更新的低性能。


最后,推荐我们的管理工具给大家

智齿客服