Oracle 还实现了一种 Hibrid Histogram,综合了 Frequency Histogram 和 Height-Balanced Histogram 的优点,TiDB 实现的 Histogram 主要参考的就是 Oracle 的 Hibraid Histogram。 Hibrid Histogram 包含 N 个 bucket,我们设定的 N 的默认值是 256,每个 bucket 包含三个字段number,value和repeat,number代表放在这个 bucke...
Compile模块会将 AST语法树转换成执行计划(SQL Plan),这部分对应的代码在pkg/planner目录下,Plan 对象会根据 ast.Node 即AST语法树来生成,并在创建Plan的过程中会进行验证、逻辑优化和物理优化,也会创建对应的session上下文。 还有一点需要注意,Compile模块中提供了将Plan对象转为对应存储类型(StoreType)的执行器(Exec...
MySQL [demo]> select min(t.serialno) as start_key, max(t.serialno) as end_key, count(*) as page_size from ( select *, row_number () over (order by serialno) as row_num from tmp_loan ) t group by floor((t.row_num - 1) / 50000) order by start_key; +---+---+---...
内存溢出(Out Of Memory)一直是困扰数据库行业的典型问题,5.1 版本针对 TiDB 的内存使用进行了一系列优化,从而降低 OOM 风险:无论数据量大小,窗口函数 row_number 将只占用固定大小内存;优化分区表的读取,占用更少内存;为存储层加入可配置的内存限制,当限制触发时,系统将释放部分缓存以降低内存占用;TiFla...
TO_NUMBER(key) TO_CHAR(key) CONVERT(key,dataType)TiDB 支持转换为下面类型:BINARY、CHAR、DATE、DATETIME、TIME、SIGNED INTEGER、UNSIGNED INTEGER和DECIMAL。 日期类型转换为字符串类型 TO_CHAR(SYSDATE,'yyyy-MM-dd hh24:mi:ss') TO_CHAR(SYSDATE,'yyyy-MM-dd') ...
select c_custkey,c_name,sum(l_extendedprice * (1 - l_discount)) as revenue, c_acctbal,n_name,c_address,c_phone,c_comment,min(C_MKTSEGMENT),min(L_PARTKEY), min(L_SUPPKEY,min(L_LINENUMBER),min(L_QUANTITY), max(L_TAX), max(L_LINESTATUS), min(L_SHIPDATE), min(...
TiFlash 一开始尝试过基于 LSM Tree 架构实现,但是后面发现它的读性能并不能满足要求,并且还存在其他的问题。所以才启动了 Delta Tree 项目。下面是 Delta Tree 与基于 LSM Tree 实现的列存引擎在不同数据量(Tuple number)以及不同更新 TPS (Transactions per second) 下的读 (Scan) 耗时对比。
cardinality 一般通过统计数据得到,也就是统计信息中对应表上对应列的 DNV(the number of distinct value)的值。此数据具体的获取方式有两种: 方式一,使用真实的统计数据,具体公式如下: statsTable.count/ histogram.count * hist.NDV (statsTable.count 会根据 stats lease 定期更新,histogram.count 只有用户手动 ...
INTEGER数据类型替换为NUMBER(20); DATETIME数据类型替换为DATE; 由于“level”为oracle保留字,需要调整字段名,比如将level字段批量替换为***Level; Informix中自增序号字段转换之后会变成非法数值,通过正则表达式替换文档中非法数据类型,例如NUMBER(16,255)替换为NUMBER(16,2),搜索用到的正则表达式:”^(number(^)^(...