常见问题
部署相关
Q1:使用K8s kind部署运行起来后,插入数据报下面错误:Code: 910. DB::Exception: Received from 127.0.0.1:9000. DB::Exception: No local available worker group for vw_write SQLSTATE: HY000. A:排查原因:1、ByConity各组件状态是否ready;2、system.workers这个表有没有worker
Q2:拉取的ByConity-deploy分支,通过kind在本地部署demo,ByConity-tso-0这个容器一直Pending状态,ByConity-daemon-manager和ByConity-server一直CrashLoopBackOff A:可以用 kubectl get pvc -n bycontiy看下使用情况。如果使用量过大,可以按照https://ByConity.github.io/docs/deployment/deploy-k8s 文档里的 “Update your ByConity cluster” 章节前半部分,试着显式的调整一下某些存储配置,例如tso。
Q3:用docker run -it ByConity/ByConity-server:stable client命令在本机mac执行会报Segmentation fault,本机是mac的M2芯片? A:fdb在mac m2上运行在docker里有问题。根据开源ClickHouse的经验,ByConity生成镜像的时候,编译ClickHouse把jemalloc参数设置0。(需要后续测试并更新image)
导入导出
Q1:使用kafka引擎来导入数据的时候,要新增字段是不是只能删除雾化表再新建?还是说修改query?如果query是*那还用修改吗? A:底表和Kafka表可以执行alter,VIEW表只能重建。
Q2:ByConity提供的PartWriter工具在哪里下载? A:工具在代码主分支上,(文档需要优化)
设计表库
Q1:MergeTree和CnchMergeTree有什么区别? A:ByConity目前只支持CnchMergeTree。(补充下database engine和table engine文档)
Q2:请问下ByConity支持类似Distributed engine和ReplicatedMergeTree 的engine么?我看system.zookeeper表是不存在的,是否意味着建立的CnchMergeTree的表自动进行数据在多个node上进行分配,查询CnchMergeTree引擎的表就是查询一个逻辑上全局的表而不是只查询当前机器上的数据? A:cnch没有 原来的replica 和shard概念了
Q3:ClickHouse的MergeTree engine可以在ByConity上使用吗? A:基本用不上,只用来存储一些本地的log,例如system.query_log
Q4:请问下通过sql能查到数据库里各个表占用的存储大小以及某个表的分区数量吗? A: 查询某个分区存储量和part数:
select sum(bytes_on_disk), sum(rows_count), count(1) from system.cnch_parts where database = 'xxx' and table = 'xxx' and partition_id = 'xxx' and visible
查询某个表的分区数:
select count(1) from system.cnch_parts where database = 'xxx' and table = 'xxx' and visible
SQL相关
Q1:ByConity常用SQL语句总结 A:社区小伙伴总结的常用SQL语句:https://blog.csdn.net/cheng1483/article/details/132458760?csdn_share_tail=%7B%22type%22%3A%22blog%22%2C%22rType%22%3A%22article%22%2C%22rId%22%3A%22132458760%22%2C%22source%22%3A%22cheng1483%22%7D&fromshare=blogdetail
Q2:ByConity的查询语句和MySQL差的很多嘛? A:
集群管理
Q1:使用ByConity扩缩容节点数量,直接调整statefulset.apps/ByConity-vw-vw-default, statefulset.apps/ByConity-vw-vw-write 的副本数量就ok吗? 还是需要额外配置?是否支持无损扩缩容,可以通过hpa配置? A:可以直接调整更新,具体参考:https://ByConity.github.io/zh-cn/docs/deployment/deploy-k8s。 也可以通过HPA配置。
Q2:ByConity,支持多租户的资源控制(virtual warehouse), 具体user如何关联virtual warehouse呢?是否有基于用户维度的限制吗?或者像ClickHouse,限制单个请求的内存消耗?(需要补充文档) A:关联都是通过建表的时候指定或者在查询的时候指定vw来实现的,参考:https://ByConity.github.io/zh-cn/docs/basic-guide/virtual-warehouse-configuration。基于用户维度的限制目前只有server粒度的,还没有vw粒度。
Q3:ByConity-worker-write和ByConity-worker的区别是什么?会被分别安装到不同节点吗? A:ByConity-worker-write是特定用于写操作的,会放在写的计算组里,ByConity-worker一般用于读操作。
Q4:ByConity对write节点本地磁盘的使用比例有控制? A:disk cache的大小可以通过disk_cache_strategies.simple.lru_max_size 控制,但如果小文件比较多,实际的空间使用会超过配置的值。建议用户在配置disk cache大小的时候留一些余量,我们已经着手通过优化小对象的存储方式来解决这个问题,见issue498(https://github.com/ByConity/ByConity/issues/498#issuecomment-1752426986)
Q5、The amount of the disk on instance in question reach its limits., Node(i-bp1ex1d4c)exceed the limit attachments of disk, which at most 16 disks. A:fdb安装挂载磁盘超限了
存储相关
Q1:ByConity配置s3之后,当写数据时,是先写本地磁盘后,多久才会写入s3? 当查询数据时,是直接s3远程查询,还是先到本地磁盘里,看下有cache吗? A:写入数据时,数据直接写入S3,本地磁盘存放存放的是临时文件。查询时,先查找本地磁盘的cache,如果没有再访问远端存储。
Q2:AWS s3 endpoint是使用https://xxx还是s3://xxxx?要访问s3 bucket,就要把上面的endpoint, bucket, path 合并吗? A:参考:https://byconity.github.io/zh-cn/docs/admin-guides/cluster-configuration#storage_configuration。是的合并路径。
Q3:S3配置里的ak_id和ak_secret就是s3 的access_key 和secret_key?type是什么?virtual_host_style是做什么的? A:ak_id和ak_secret就是s3 的access_key 和secret_key。Type配置成bytes3。virtual_host_style 可以设置成true,公有云基本上都用的是虚拟主机的请求方式,minio 默认不配置的话 用的是 PathStyle。
Q4:ByConity hdfs c++ client 用的是什么呀 A:参考:https://github.com/ByConity/libhdfs3-open.git
Q5:ByConity disk cache大小是如何确定得 A:通过disk cache策略可以配置,参数disk_cache_strategies,有一个最大设置,lru_max_size。参考:https://ByConity.github.io/zh-cn/docs/basic-guide/cluster-configuration#disk_cache_strategies Example: <disk_cache_strategies>
<simple>
<lru_max_size>1099511627776</lru_max_size>
</simple>
</disk_cache_strategies>
Q6:ByConity底层数据存储结构相对于ClickHouse有改动吗,以及本地缓存和远端存储数据一致性怎么保证的? A:Byconity 会把属于同一个part的各个列存放在HDFS/S3的一个文件中. 文件写入之后是不可更改的, 数据的修改操作靠新增delta part 实现. 所以本地缓存和远端数据在part层面不存在一致性问题, 只有cache 和 没有cache的区别.
性能测试
Q1:请问ByConity在Join性能上有和ClickHouse对比分析嘛? A:可以参考文档中 “性能测试” 部分,针对两者做了TPC-DS测试。
其他
Q1:ByConity是基于ClickHouse的哪个版本开发的?基本的特性是不是跟ClickHouse一样? A:21.8。参考:https://github.com/ByConity/ByConity/pull/347
Q2:如何用ByConity的cli的client,有文档么?(这个命令kevin反馈文档已经旧了,需要更新) A:docker run -it ByConity/ByConity-server:stable client --host {} --port {}
Q:开启优化器会自动走复杂查询执行模型。通过配置 enable_optimizer=1,或者 dialect_type='ANSI' 可以开启。请问是手动执行,还是可以写在配置文件?(补充下配置文档,每个配置表示什么) A:可以手动修改users.xml文件,添加这些配置,然后重新启动ByConity。
Q:咱们 ByConity 支持二级索引吗?如果支持的话二级索引文件对其打包进 hdfs 上吗? A:ByConity支持二级索引。
Q:ByConity 支持ClickHouse的dictionary吗?目前只看到有mysql table engine https://ByConity.github.io/docs/basic-guide/data-import A:Dictionary in CNCH User guide
Q:ByConity有类似ClickHouse max_bytes_to_merge_at_min_space_in_pool 设置parts最小大小的参数吗 A:有的,cnch_merge_max_total_rows_to_merge限制行数,max_bytes_to_merge_at_max_space_in_pool限制bytes
Q:ByConity支持projection吗? A:hdfs和s3都可以
Q:请问下sharding_key是如何定义的呢?我看ByConity有?optimize_skip_unused_shards这个参数,默认是false。如果设置成true,哪种情况下会有风险和问题呢?看这个参数我理解逻辑上直接代码中就是true的逻辑不是更好,暴露出来这个配置的原因是什么呢? A:
Q:cnch_config.xml所有参数全靠猜 A: