Closed wangzihaogithub closed 2 years ago
没问题了,这样配置就行了
storage_engines:
create table mytest(f1 int) PARAMETERS (pageStorageMode='COLUMN_STORAGE') 这样也可以。
存储引擎有几个核心的参数: pageSplitSize: 默认每个 page 最大16kb,超过了就 split cacheSize: 每个 btree 最大缓存 16M compress: 默认是0,不压缩,1 是 LZF 压缩,2 是 DEFLATE 压缩
有没有图片看下 btreeStorage调用COLUMN_STORAGE的流程图
还有COLUMN_STORAGE的数据结构
还有个疑问,session线程接到sql后,只能单线程计算吗?
有没有图片看下 btreeStorage调用COLUMN_STORAGE的流程图
在 org.lealone.storage.aose.btree.page.LeafPage.writeColumnStorage 先打个断点, 然后 insert 一些记录,最后执行一下 checkpoint 语句就会把内存中的数据用列存的方式刷到硬盘。
还有个疑问,session线程接到sql后,只能单线程计算吗?
执行 sql 目前不支持并行查询。
感谢, 其实想问的是,btree怎么存储列存储,我理解列存储不应该是kv的那种吗?
lealone btree 采用的是 page 粒度的行列混合存储,跟常见的列存储是不一样的。 page 粒度的列存储的意思是: 如果有1万行记录,每个 page 按先后顺序各存1000行记录,但是每个 page 里面的1000行记录是按列的格式布局。
先后顺序是插入的先后顺序吗? 还是fn(1000个主键)的排序?
你看我这样理解对不?
每个page 有1000条记录,kv格式存储。 btree的生成是依据的主键落到page上的
如果表没有主键或虽然有主键但是不能转换成 long 类型的主键就是插入的先后顺序, 如果有能转换成 long 类型的主键就是对主键排序后的顺序。
明白了 感谢感谢
有几小问题,想请教一下作者,辛苦解答, 万分感激。
疑问1. 如何建一张列式存储引擎的表? 疑问2. 存储引擎的用户配置和选项有哪些? 疑问3. 想了解下PageStorageMode类里的 ROW_STORAGE,COLUMN_STORAGE的大概的执行流程和逻辑规则是什么? 疑问4. 想了解下,一张表120w行,6个字断,平均每行数据90Byte的表。执行下面的sql效果会不会比mysql表现要好?
select count(DISTINCT u_id), left(create_time,10) from table where create_time > #{begin} and create_time < #{end} group by left(create_time,10)