/api/db/.../stat
为了能够访问 SmartEDB Web 服务,必须启动 REST 服务器。当使用 xSQL 启动 REST 服务器时,配置文件中必须包含 rest 部分。例如:
database_name : xsqldb,
database_size : 100m,
perfmon : {
database_size : 64m
},
rest : {
port : 8083
}
请注意,此处的 perfmon 部分表示要启用 SmartEDB 性能监视器,并且省略了其余参数 addr,这使得 REST 服务器能够接受所有可用网络接口上的传入连接。有关更多信息,请参阅 xSQLWeb 服务 REST 参数页面。
对于此 xSQL 配置,启动 REST 服务器(监听 8083 端口)后,db 资源请求将显示以下内容:
{
"databases":
[
"xsqldb",
"eXDB_perf"
]
}
要查看 eXDB_perf 数据库的数据库统计信息,请使用以下 HTTP 请求
http://localhost:8083/api/db/eXDB_perf/stat
将显示以下内容:
{
"mem":
{
"free_pages": 499728,
"total_pages": 522689,
"page_size": 128
},
"classes":
[
{
"table_name": "Node",
"objects_num": 0,
"versions_num": 0,
"core_pages": 0,
"blob_pages": 0,
"seq_pages": 0,
"core_space": 0,
"indexes":
[
{
"type": 128,
"type_s":
[
"MCO_IDXST_TYPE_MEM",
"MCO_IDXST_NATURE_BTREE",
"MCO_IDXST_FEATURE_OPTIMIZED",
"MCO_IDXST_FUNCTION_REGULAR"
[
"plabel": "Node.no_idx",
"keys_num": 0,
"pages_num": 1,
"avg_cmp": 1,
"max_cmp": 1,
"btree":
{
"levels_num": 0,
"duplicates_num": 0
}
}
]
},
{
"table_name": "eXDBDatabase",
"objects_num": 1,
"versions_num": 1,
"core_pages": 1,
"blob_pages": 0,
"seq_pages": 0,
"core_space": 128,
"indexes":
[
{
"type": 128,
"type_s":
[
"MCO_IDXST_TYPE_MEM",
"MCO_IDXST_NATURE_BTREE",
"MCO_IDXST_FEATURE_OPTIMIZED",
"MCO_IDXST_FUNCTION_REGULAR"
[
"plabel": "eXDBDatabase.no_idx",
"keys_num": 1,
"pages_num": 1,
"avg_cmp": 1,
"max_cmp": 1,
"btree":
{
"levels_num": 0,
"duplicates_num": 0
}
}
]
},
{
"table_name": "PerfCounter",
"objects_num": 33,
"versions_num": 33,
"core_pages": 33,
"blob_pages": 0,
"seq_pages": 0,
"core_space": 4224,
"indexes":
[
{
"type": 144,
"type_s":
[
"MCO_IDXST_TYPE_MEM",
"MCO_IDXST_NATURE_BTREE",
"MCO_IDXST_FEATURE_UNIQUE",
"MCO_IDXST_FEATURE_OPTIMIZED",
"MCO_IDXST_FUNCTION_REGULAR"
[
"plabel": "PerfCounter.no_idx",
"keys_num": 33,
"pages_num": 4,
"avg_cmp": 2,
"max_cmp": 2,
"btree":
{
"levels_num": 1,
"duplicates_num": 0
}
}
]
},
{
"table_name": "PerfReading",
"objects_num": 270,
"versions_num": 270,
"core_pages": 540,
"blob_pages": 0,
"seq_pages": 0,
"core_space": 69120,
"indexes":
[
{
"type": 128,
"type_s":
[
"MCO_IDXST_TYPE_MEM",
"MCO_IDXST_NATURE_BTREE",
"MCO_IDXST_FEATURE_OPTIMIZED",
"MCO_IDXST_FUNCTION_REGULAR"
[
"plabel": "PerfReading.rec_idx",
"keys_num": 270,
"pages_num": 23,
"avg_cmp": 3,
"max_cmp": 3,
"btree":
{
"levels_num": 2,
"duplicates_num": 0
}
},
{
"type": 128,
"type_s":
[
"MCO_IDXST_TYPE_MEM",
"MCO_IDXST_NATURE_BTREE",
"MCO_IDXST_FEATURE_OPTIMIZED",
"MCO_IDXST_FUNCTION_REGULAR"
[
"plabel": "PerfReading.stamp_idx",
"keys_num": 270,
"pages_num": 23,
"avg_cmp": 3,
"max_cmp": 3,
"btree":
{
"levels_num": 2,
"duplicates_num": 0
}
}
]
},
{
"table_name": "PerfTimingReading",
"objects_num": 270,
"versions_num": 270,
"core_pages": 1080,
"blob_pages": 0,
"seq_pages": 0,
"core_space": 138240,
"indexes":
[
{
"type": 128,
"type_s":
[
"MCO_IDXST_TYPE_MEM",
"MCO_IDXST_NATURE_BTREE",
"MCO_IDXST_FEATURE_OPTIMIZED",
"MCO_IDXST_FUNCTION_REGULAR"
[
"plabel": "PerfTimingReading.rec_idx",
"keys_num": 270,
"pages_num": 23,
"avg_cmp": 3,
"max_cmp": 3,
"btree":
{
"levels_num": 2,
"duplicates_num": 0
}
},
{
"type": 128,
"type_s":
[
"MCO_IDXST_TYPE_MEM",
"MCO_IDXST_NATURE_BTREE",
"MCO_IDXST_FEATURE_OPTIMIZED",
"MCO_IDXST_FUNCTION_REGULAR"
[
"plabel": "PerfTimingReading.stamp_idx",
"keys_num": 270,
"pages_num": 23,
"avg_cmp": 3,
"max_cmp": 3,
"btree":
{
"levels_num": 2,
"duplicates_num": 0
}
}
]
}
]
}
要查看简单持久数据库的数据库统计信息,请使用以下 HTTP 请求:
http://localhost:8083/api/db/diskdb/stat
其中 xSQL 是通过以下配置文件启动的:
database_name : diskdb,
database_size : 20m,
cache_size : 10m,
database_filename: "diskdb.dbs", # database file name, string
log_filename : "diskdb.log", # log file name, string
runtime_configuration : {
debug_library : false,
disk_support : true,
shared_memory : false,
transaction_manager : mursiw
},
rest : {
port : 8083
},
schema : "
#define uint2 unsigned<2>
declare database locatedb;
class Employee
{
string name;
uint2 dept_no;
unique tree<name> Iname;
tree<dept_no> Idept;
};
",
db_params: {
mem_page_size : 512,
disk_page_size : 8192
},
sql_trace : false,
sql_port : 5500,
sql_statements : "INSERT INTO Employee(name, dept_no) VALUES (['Luke Skywalker', 'Han Solo', 'Darth Vader'], [1,1,2]);"
将显示以下统计数据:
{
"mem":
{
"free_pages": 39513,
"total_pages": 39564,
"page_size": 512
},
"disk":
{
"data_file_size": 147456,
"log_file_size": 4,
"used_database_size": 148992,
"cache":
{
"connection_cache_hits": 0,
"cache_hits": 0,
"cache_misses": 15,
"allocated_pages": 1246,
"used_pages": 13,
"pinned_pages": 10,
"modified_pages": 0,
"dirty_pages": 0,
"copied_pages": 0,
"write_delayed_pages": 0,
"subsequent_reads": 12
}
},
"classes":
[
{
"table_name": "Employee",
"objects_num": 3,
"versions_num": 3,
"core_pages": 3,
"blob_pages": 0,
"core_space": 1536,
"indexes":
[
{
"type": 128,
"type_s":
[
"MCO_IDXST_TYPE_MEM",
"MCO_IDXST_NATURE_BTREE",
"MCO_IDXST_FEATURE_UNIQUE",
"MCO_IDXST_FEATURE_OPTIMIZED",
"MCO_IDXST_FUNCTION_REGULAR"
[
"plabel": "Employee.Iname",
"keys_num": 3,
"pages_num": 1,
"avg_cmp": 1,
"max_cmp": 1,
"btree":
{
"levels_num": 0,
"duplicates_num": 0
}
},
{
"type": 128,
"type_s":
[
"MCO_IDXST_TYPE_MEM",
"MCO_IDXST_NATURE_BTREE",
"MCO_IDXST_FEATURE_OPTIMIZED",
"MCO_IDXST_FUNCTION_REGULAR"
[
"plabel": "Employee.Idept_",
"keys_num": 3,
"pages_num": 1,
"avg_cmp": 1,
"max_cmp": 1,
"btree":
{
"levels_num": 0,
"duplicates_num": 0
}
}
]
}
]
}
数据库统计
mem
以下显示了统计数据:
- free_pages:可用内存量(以字节为单位)
- total_pages:数据库使用的内存总量
- page_size:每个内存页的大小
classes
以下显示了数据库模式中每个类的以下统计信息:
- table_name:数据库类(表)的名称
- objects_num:此类(表)的对象(行)总数
- versions_num:对象的 MVCC 版本总数
- core_pages:除 BLOB 外所有数据使用的页数
- blob_pages:BLOB 使用的页数
- seq_pages:序列使用的页数
- core_space:不计 BLOB 的总字节数
- indexes:索引统计信息数组(见下文)
indexes array
type:索引类型标志;此数值为 mco.h 头文件中定义的 MCO_IDXST_* 常量的组合
type_s:表示类型标志的字符串数组(如上所述)
plabel:索引标签
keys_num:索引中的键数
pages_num:索引使用的页数
avg_cmp:定位一个元素所需的平均比较次数
max_cmp:定位一个元素所需的最多比较次数
btree:仅针对 B 树索引:
- levels_num:树的高度
- duplicates_num:重复项的数量
kdtree:仅适用于 kd 树索引:
- levels_num:树的高度
hash:仅针对哈希索引:
- avg_chain_length:每个篮子中的平均键数
- max_chain_length:每个篮子中的最大键数
- table_size:哈希表的大小
- chains_num:链的数量
ptree:仅对于 p 树索引:
- levels_num:树的高度
- duplicates_num:重复项的数量
rtree:仅对于 r 树索引:
- levels_num:树的高度
- duplicates_num:重复项的数量
meta:仅针对元索引:
- disk_pages_num:磁盘页面的数量
持久数据库统计信息
对于持久数据库,将显示以下附加部分:
disk
显示以下统计信息:
- data_file_size:数据文件大小
- log_file_size:数据库日志文件的总大小
- used_database_size:已使用数据库存储部分的大小
- cache:缓存部分的统计信息如下所述
cache
显示以下磁盘缓存统计信息:
connection_cache_hits:自数据库打开以来连接缓存命中的次数
cache_hits:自数据库打开以来磁盘管理器缓存命中的次数
cache_misses:磁盘管理器缓存未命中的次数
allocated_pages:磁盘管理器缓存的已分配页面 大小
used_pages:磁盘缓存中已使用的页面数量
pinned_pages:固定页面的数量;即不能被换出的页面
modified_pages:缓存中被活动事务修改的页面数量
dirty_pages:脏页的数量
copied_pages:原始页面的副本数量
write_delayed_pages:写入延迟页面的数量
subsequent_reads:顺序位置页面的后续读取次数