local_filesystem_read_method
preadv2 系统调用和 RWF_NOWAIT 标志进行检查。该检查需要 Linux 5.11 或更高版本,并且该系统调用不得被容器运行时的 seccomp profile 拒绝。启动时会检查该系统调用是否可用;如果不可用,此设置的默认值会切换为 ‘pread’,因为将每次读取操作 (包括由页缓存提供的读取) 都交由线程池处理开销较大;原因会记录在服务器日志中。只有当 seccomp profile 以错误代码拒绝该系统调用时,才能检测到它,这也是容器运行时的行为;对于会直接终止进程的 profile,则无法检测。通过配置或使用 SET 显式设置的值不会被切换。
‘io_uring’ 方法处于 Experimental 状态,并且不适用于 Log、TinyLog、StripeLog、File、Set 和 Join,以及其他在并发读写情况下使用可追加文件的表。
如果你在互联网上看过各种关于 ‘io_uring’ 的文章,不要被它们误导。除非是在有大量小型 IO 请求的场景下,否则它并不是更好的文件读取方法,而 ClickHouse 并不属于这种情况。因此,没有理由启用 ‘io_uring’。