Clickhouse: 随笔杂记

本文详细阐述了Clickhouse如何利用内存缓存元数据、Mark数据和解压缩数据,以及其执行DDL/DML操作时的锁机制,包括alter_lock和drop_lock的使用。
摘要由CSDN通过智能技术生成

Clickhouse 文件缓存的使用

元数据缓存
1、Clickhouse启动的时候会加载所有表的元数据信息,这部分会缓存在内存里面。这部分的内存没有办法知道并且也不走MemoryTracker。


Mark数据缓存
2、Clickhouse会缓存表的mark信息在内存里, 使用LRU算法来控制。缓存大小通过配置文件中config.xml里面的mark_cache_size属性来控制。默认是5G。每个Shard上面占用的内存。


数据缓存
3、Clickhouse会缓存表的解压缩数据放到内存里面,使用LRU算法来控制。LRU的大小通过config.xml里面的uncompressed_cache_size属性来控制。默认是8G。每个Shard上面占用的内存。

Clickhouse 执行DDL DML锁机制

lockForShare
用于保证占有lock时table不会被drop.用于SELECT,后台的merge
lockForAlter
用于保证占有lock时同时刻只会处理一个ALTER Query
lockExclusively
用于保证占有lock时没有任何其他线程(如select,merge,alter)对表进行操作


两种锁:
alter_lock
进行alter操作的时候必须要抢占的锁以保证任何时刻只有一个alter线程处理table,drop等操作也需要调用lockExclusively抢占该锁以保证进行操作前所有alter操作已经结束.
drop_lock
所有select/merge相关的query需要调用lockForShare抢占该锁保证表没有被drop.
所有drop相关操作时需要调用lockExclusively抢占该锁,保证进行drop时所有其他任何select/merge操作都已经结束.

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值