为了提高查询性能,
GBase 8a MPP Cluster 提供了将数据直接加载到内存中的管理
功能,
用户可以将频繁使用的整张表的全部数据或者指定列的数据加载到内存中,
并且在内存中一直保存加载的数据,这样可以减少I/O 操作,实现直接从内存中
访问表数据,提高查询性能的目的。对于集群产品来说,缓存的装载与释放,都
在gnode 层体现。
对于表级、
列级缓存的装载与释放,
主要会涉及到缓存中的两种状态,
即LOCKED
状态和KEEP 状态。
LOCKED 状态DC:
正在被其它线程或算子访问的DC,
访问DC 时要首先对
DC 加锁(LOCK),访问完成再解锁(UNLOCK)。
KEEP 状态DC:
对于访问频繁的表,
为提高访问效率,
通过ALTER TABLE …
CACHE 命令将表中的全部数据(或某列的数据)装载到缓存中,当内存不
足时,不允许对这些DC 进行缓存交换,KEEP 状态的DC 只能通过ALTER
TABLE …NOCACHE 命令进行释放。
KEEP 状态会使数据常驻内存,
减少磁
盘I/O 操作。
对于用户而言,我们建议一般装载表数据占用的内存的空间不要超过可用物理内
存空间的50%。