SequoiaDB 简介
安装部署
数据库实例
分布式引擎
SAC 管控中心
参考手册
常见问题及解答(FAQ)
版本信息
SORT 的推演公式将展示以下信息:
| 字段名 | 类型 | 描述 |
|---|---|---|
| Records | int64 | SORT 输入记录个数的估算值 |
| SortFields | int32 | SORT 进行排序的字段个数的估算值 |
| RecordTotalSize | int64 | SORT 输入记录总大小的估算值 公式为 Records * RecordSize |
| Pages | int32 | SORT 输入记录页数的估算值(输入记录个数的总大小存放入 4K 页面中的页数) 公式为 max( 1, ceil( RecordTotalSize / PageUnit) ) |
| SortType | string | 估算的 SORT 排序类型 RecordTotalSize 小于 sortbuff 时,为内存排序"InMemory" RecordTotalSize 大于 sortbuff 时,为外存排序"External" |
| IOCost | array | 估算的 SORT 的 IO 代价公式及计算过程 SortType 为"InMemory"时不需要计算 各个数据页需要写出磁盘,并进行归并排序,假设归并排序中 75% 为顺序读,25% 为随机读 公式为 ceil( Pages * ( SeqWrtIOCostUnit + SeqReadIOCostUnit * 0.75 + RandomReadIOCostUnit * 0.25 ) ) |
| CPUCost | array | 估算的 SORT 的 CPU 代价公式及计算过程 即各个记录进行排序的代价 公式为 ceil( 2 * OptrCPUCost * SortFields * max( 2, Records ) * log2( max( 2, Records ) ) ) |
| StartCost | array | 估算的 SORT 启动代价 需要计算子操作的总代价和排序的代价 公式为 ChildTotalCost + IOCPURate * IOCost + CPUCost |
| RunCost | array | 估算的 SORT 运行代价(内部表示) 即从排序缓存中提取各个记录的代价 公式为: OptrCPUCost * Records |
| TotalCost | array | 估算的 SORT 总代价(内部表示) 公式为 StartCost + RunCost |
| OutputRecords | array | 估算的 SORT 输出记录个数 公式为 Records |
"SortNode": {
"Records": 1000000,
"SortFields": 1,
"RecordTotalSize": [
"Records * RecordSize",
"1000000 * 269",
269000000
],
"Pages": [
"max( 1, ceil( RecordTotalSize / PageUnit) )",
"max( 1, ceil( 269000000 / 4096) )",
65674
],
"SortType": "External",
"IOCost": [
"ceil( Pages * ( SeqWrtIOCostUnit + SeqReadIOCostUnit * 0.75 + RandomReadIOCostUnit * 0.25 ) )",
"ceil( 65674 * ( 2 + 1 * 0.75 + 10 * 0.25 ) )",
344789
],
"CPUCost": [
"ceil( 2 * OptrCPUCost * SortFields * max( 2, Records ) * log2( max( 2, Records ) ) )",
"ceil( 2 * 1 * 1 * max( 2, 1000000 ) * log2( max( 2, 1000000 ) ) )",
39863138
],
"StartCost": [
"ChildTotalCost + IOCPURate * IOCost + CPUCost",
"160864000 + 2000 * 344789 + 39863138",
890305138
],
"RunCost": [
"OptrCPUCost * Records",
"1 * 1000000",
1000000
],
"TotalCost": [
"StartCost + RunCost",
"890305138 + 1000000",
891305138
],
"OutputRecords": [
"Records",
"1000000",
1000000
]
}
展开