8 PostgreSQL的存储层优化
数据存储层,处于数据库管理系统的最底层,直接和物理IO打交道;数据库系统的性能,瓶颈出现在IO的概率较多。做性能优化,在数据存储层上下功夫,也是最容易出效果之处。
8.1存储层结构
存储层只有在数据文件作为共享资源时,涉及并行,被加锁互斥。其他不涉及并行,如果改为按库存储,则缓存也按库区分,则可以并行处理缓存的读写;可以利用多进程或多线程的好处,提高IO操作效率;如果把不同库的存储,通过表空间,分布在不同外存介质,则可以利用每个独立外部存储的逻辑控制器同时进行IO操作。
8.2存储管理方式
对于存储,是依赖于操作系统,还是数据库系统自己管理,可以区分出两种方式:
SMS(System Managed Space):直接利用操作系统的文件系统来管理数据。PG采取的就是SMS方式。SMS方式有个问题,是数据文件需要不断扩展,存储空间不是预先分配的,这样会导致效率问题,动态扩展操作会迟滞IO。
DMS(Database Managed Space):由数据库进行数据的存储空间控制。DMS方式,存储空间连续分配,并配合表空间,可以使得某个存储空间为一个表所专用,这样,数据可以连续存放,使得IO读写高效。
MS SQL SERVER采取的方式,就是DMS。PG的存储系统,如果往DMS上走,相信性能会有大幅提高。