2.0 管理端元数据库dble_information
2.0.0 简介
dble_information 提供了一系列表格来描述dble内部一些元数据,可以通过管理端口连接dble之后,use dble_information之后查询内部的元数据信息。
以下是这些表格的详述:
支持表格的投影(select)
支持表格的选择(where)
支持表格的连接(join)
支持表格的非关联where子查询
支持聚合运算
支持排序
支持标量函数
支持 use dble_information
支持 show tables [ like ]
支持 desc|describe table xxx
支持 show databases; 注意和show @@database不同
部分表格支持INSERT/UPDATE/DELETE
2.0.1 dble_information下的表
2.0.1.0 version
表名:version
含义:dble版本号
字段:
列名 | 主键 | 注释 |
---|---|---|
version | true | 版本号 |
- 数据行:
- dble的版本号
2.0.1.1 dble_variables
表名:dble_variables
含义:全局设置
字段:
列名 | 主键 | 注释 |
---|---|---|
variable_name | true | 变量名 |
variable_value | 变量值 | |
comment | 说明 | |
read_only | 是否只读 |
数据行:
- version_comment: 版本信息 - isOnline: 在线状态 - heap_memory_max: 堆内存的最大限制(mb) - direct_memory_max: 通过-XX:MaxDirectMemorySize设置的值 附加项:show @@sysparam中的所有配置
2.0.1.2 dble_status
表名:dble_status
含义:全局状态
字段:
列名 | 主键 | 注释 |
---|---|---|
variable_name | true | 变量名 |
variable_value | 变量值 | |
comment | 说明 |
- 数据行:
- uptime: dble启动的时间长度(秒) - current_timestamp: dble系统的当前时间 - startup_timestamp: dble系统的启动时间 - heap_memory_max: 堆内存的最大限制 - heap_memory_used: 堆内存的使用量 - heap_memory_total: 堆内存的总量 - config_reload_timestamp: 上次config加载时间 - direct_memory_max: 通过-XX:MaxDirectMemorySize设置的值 - direct_memory_pool_size: 内存池的大小,等于bufferpoolpagesize和bufferpoolpagenumber的乘积 - direct_memory_pool_used: 已经使用的内存池中的directmemory内存 - questions: 请求数 - transactions: 事务数
2.0.1.3 thread pool系列
2.0.1.3.1 dble_thread_pool
表名:dble_thread_pool
含义:线程池使用情况
字段:
列名 | 主键 | 注释 |
---|---|---|
name | true | 线程池名称 |
pool_size | 实际线程池大小 | |
core_pool_size | 理论线程池大小(和所设置值保持一致) | |
active_count | 活跃的线程数 | |
waiting_task_count | 等待消费的线程数(如果值较大, 需增大处理线程数) |
数据行: 略
注意:这里的 active_count/waiting_task_count 都是只统计 线程数 的变化。但是,dble 针对某些线程池(frontWorker和writeToBackendWorker)采用了常驻线程的实现方式,故线程数不变,使得这些字段不能反映 "是否消费了任务" 以及 "消费了多少了个任务" ,如需获得线程池执行任务的统计情况,可以考虑使用dble_thread_pool_task表。
2.0.1.3.2 dble_thread_pool_task
表名:dble_thread_pool_task
含义:线程池的任务消费情况
字段:
列名 | 主键 | 注释 |
---|---|---|
name | true | 线程池名称 |
pool_size | 实际线程池大小 | |
active_task_count | 正在处理中的任务数 | |
task_queue_size | 等待消费的任务数(如果值较大, 需增大处理线程数) | |
completed_task | 已完成的任务数量 | |
total_task | 总共任务数量 |
- 数据行: 略
2.0.1.4 dble_processor
表名:dble_processor
含义:processor信息
字段:
列名 | 主键 | 注释 |
---|---|---|
name | true | 名称 |
type | 类型(session/backend) | |
conn_count | 其负责处理的连接数 | |
conn_net_in | 网络接收流量 (线程不安全) | |
conn_net_out | 网络发送流量 (线程不安全) |
- 数据行:略
2.0.1.5 dble_sharding_node
表名:dble_sharding_node
含义:sharding_node配置及状态
字段:
列名 | 主键 | 注释 |
---|---|---|
name | true | 名称 |
db_group | db_group名 | |
db_schema | db_schema名 | |
pause | 是否暂停流量 |
- 数据行:略
2.0.1.6 dble_db_group
表名:dble_db_group
含义:db_group配置及状态
字段:
列名 | 主键 | 注释 |
---|---|---|
name | true | 名称 |
heartbeat_stmt | 心跳用的sql语句 | |
heartbeat_timeout | 心跳超时时间(秒) | |
heartbeat_retry | 心跳重试次数 | |
rw_split_mode | 读写分离模式 | |
delay_threshold | 延迟时间 | |
disable_ha | 是否停用高可用 | |
active | 是否落盘 |
- 数据行:略
2.0.1.7 dble_db_instance
表名:dble_db_instance
含义:db_instance配置及状态
字段:
列名 | 主键 | 注释 |
---|---|---|
name | true | 名称 |
db_group | true | db_group的主键 |
addr | 地址 | |
port | 端口 | |
primary | 是否是主节点 | |
user | 账号 | |
password_encrypt | 加密后的密码 | |
encrypt_configured | 是否启用加密 | |
active_conn_count | 当前活动的后端连接数量 | |
idle_conn_count | 当前空闲的后端连接数量 | |
read_conn_request | 获取读连接的次数 | |
write_conn_request | 获取写连接的次数 | |
disabled | 是否被标记为disabled | |
last_heartbeat_ack_timestamp | 上次收到心跳回复时间戳 | |
last_heartbeat_ack | init/ok/error/timeout | |
heartbeat_status | idle/checking | |
heartbeat_failure_in_last_5min | 过去5分钟, 心跳失败的次数 | |
min_conn_count | 最小后端连接数量 | |
max_conn_count | 最大后端连接数量 | |
read_weight | 读负载 | |
db_district | 后端mysql实例所在区域 | |
db_data_center | 后端mysql实例所在数据中心 | |
id | id | |
connection_timeout | 获取连接的超时时间 | |
connection_heartbeat_timeout | 空闲连接检测后的超时时间 | |
test_on_create | 连接创建后是否检测有效性 | |
test_on_borrow | 连接被借出后是否检测有效性 | |
test_on_return | 连接被返回时是否检测有效性 | |
test_while_idle | 连接空闲时是否检测有效性 | |
time_between_eviction_runs_millis | 扩缩容线程的检测周期 | |
evictor_shutdown_timeout_millis | 扩缩容线程停止的超时时间 | |
idle_timeout | 连接空闲多久之后被回收 | |
heartbeat_period_millis | 连接池的心跳周期 | |
flow_high_level | 流量控制的连接高水位 | |
flow_low_level | 流量控制的连接低水位 |
- 数据行:略
2.0.1.8 dble_schema
表名:dble_schema
含义:schema配置
字段:
列名 | 主键 | 注释 |
---|---|---|
name | true | 版本号 |
sharding_node | dble_sharding_node表的主键 | |
ap_node | dble_ap_node表的主键 | |
function | 拆分规则 | |
sql_max_limit | 最大返回结果集限制 | |
logical_create_and_drop | 是否允许逻辑创建和删除(为true的话,可以执行创建和删除的语句,但实际上不会创建或删除schema;反之,执行创建和删除语句会报错) |
- 数据行:略
2.0.1.9 session_variables
表名:session_variables
含义:前端连接变量
字段:
列名 | 主键 | 注释 |
---|---|---|
session_conn_id | true | 前端连接id |
variable_name | true | 变量名 |
variable_value | 变量名值 | |
variable_type | 变量类型(sys/user) |
- 数据行:
已知变量 : - tx_read_only:只读事务(mysql8.0) - transaction_read_only:只读事务(mysql5.7) - character_set_client:字符集 - collation_connection:字符集 - character_set_results:字符集 - tx_isolation_level:隔离级别(mysql8.0) - transaction_isolation:隔离级别 (mysql5.7) - autocommit:自动提交 - 其他被特别设置的变量
2.0.1.10 session_connections
表名:session_connections
含义:前端连接
字段:
列名 | 主键 | 注释 |
---|---|---|
session_conn_id | true | 前端连接id |
remote_addr | 远端地址 | |
remote_port | 远端端口 | |
local_port | 本地端口 | |
processor_id | 负责处理连接的处理器id | |
user | 登录用户名 | |
tenant | 租户 | |
schema | 当前schema? (分库分表/读写分离 功能不同) | |
sql | 最后运行的sql(如果长度大于1024个字符,将会被截断为1024) | |
sql_execute_time | 已完成sql的响应时间, 或未完成的sql的持续时间(单位为ms)(由于实现方式的原因,可能出现正负20ms的误差) | |
sql_start_timestamp | sql的开始时间戳 | |
sql_stage | 运行的当前阶段,结束时会变成finished | |
conn_net_in | 网络接收流量 | |
conn_net_out | 网络发送流量 | |
conn_estab_time | 连接建立时长(毫秒) | |
conn_recv_buffer | 接收缓冲区大小(字节) (若值较大, 说明正在接收较大的数据包, 或者接收的数据包没有及时被消费) | |
conn_send_task_queue | 网络发送任务队列(个) (若值较大, 说明没有线程对数据包进行及时发送) | |
conn_recv_task_queue | 网络接收任务队列(个) (若值较大, 说明没有线程对数据包进行及时消费) | |
in_transaction | 该连接是否在事务中 | |
xa_id | 该连接中的xid, 如果存在具体值,说明处于XA事务中 | |
entry_id | 入口id |
- 数据行:略
2.0.1.11 backend_variables
表名:backend_variables
含义:后端连接变量
字段:
列名 | 主键 | 注释 |
---|---|---|
backend_conn_id | true | 后端连接id |
variable_name | true | 变量名 |
variable_value | 变量值 | |
variable_type | 变量类型(sys/user) |
- 数据行:
已知行: - tx_read_only, 只读事务(mysql8.0) - transaction_read_only, 只读事务(mysql5.7) - character_set_client, 字符集 - collation_connection, 字符集 - character_set_results, 字符集 - tx_isolation_level, 隔离级别(mysql8.0) - transaction_isolation, 隔离级别(mysql5.7) - autocommit, 自动提交 - 其他被特别设置的变量
2.0.1.12 backend_connections
表名:backend_connections
含义:后端连接
字段:
列名 | 主键 | 注释 |
---|---|---|
backend_conn_id | true | 后端连接id |
db_group_name | db组 | |
db_instance_name | db实例 | |
remote_addr | 远端地址 | |
remote_port | 远端端口 | |
remote_processlist_id | 远端的mysql线程id | |
local_port | 本地端口 | |
processor_id | 负责处理连接的处理器id | |
user | 登录用户名 | |
schema | 当前schema? (分库分表/读写分离 功能不同) | |
session_conn_id | 与之对应的前端连接id, 未使用时可为空 | |
sql | 最后运行的sql(如果长度大于1024个字符,将会被截断为1024) | |
sql_execute_time | 响应时间或者未完成sql持续时间(由于实现方式的原因,可能出现正负20ms的误差) | |
mark_as_expired_timestamp | 该连接被标记为退休的时间, 退休连接将不返还连接池, 当前任务结束后即关闭 | |
conn_net_in | 网络接收流量 | |
conn_net_out | 网络发送流量 | |
conn_estab_time | 连接建立时长(秒) | |
borrowed_from_pool | 是否从连接池中取出使用(这列可以按照当前连接池属性扩展为多列) | |
state | 后端连接在连接池中的状态,比如是否空闲等 | |
conn_recv_buffer | 接收缓冲区大小(字节) (若值较大, 说明正在接收较大的数据包, 或者接收的数据包没有及时被消费) | |
conn_send_task_queue | 网络发送任务队列(个) (若值较大, 说明没有线程对数据包进行及时发送) | |
used_for_heartbeat | 该连接是否被用于心跳检测 | |
conn_closing | 该连接是否正在被关闭 | |
xa_status | 该连接的xa状态 | |
in_transaction | 该连接是否在事务中 |
- 数据行:略
2.0.1.13 dble_table系列
2.0.1.13.0 dble_table
表名:dble_table
含义:table基本信息
字段:
列名 | 主键 | 注释 |
---|---|---|
id | true | 自增序列(配置中的table前缀为C、schema配置单个mysql节点中的table的前缀为M、schema配置多个mysql节点中的table的前缀为FC) |
name | 名称 | |
schema | schema名称 | |
max_limit | 最大返回结果集限制 | |
type | global/single/sharding/child/no sharding |
逻辑主键
name、schema数据行:略
2.0.1.13.1 dble_global_table
表名:dble_global_table
含义:全局表信息
字段:
列名 | 主键 | 注释 |
---|---|---|
id | true | dble_table的id字段 |
check | 是否开启一致性检查 | |
checkClass | 开启一致性检查的class | |
cron | 开启一致性检查的定时任务 |
- 数据行:略
2.0.1.13.2 dble_sharding_table
表名:dble_sharding_table
含义:分片表信息
字段:
列名 | 主键 | 注释 |
---|---|---|
id | true | dble_table的id字段 |
increment_column | 全局序列 | |
sharding_column | 拆分列 | |
sql_required_sharding | sqlRequiredSharding配置 | |
algorithm_name | 拆分算法的名称 |
- 数据行:略
2.0.1.13.3 dble_child_table
表名:dble_child_table
含义:分片子表信息
字段:
列名 | 主键 | 注释 |
---|---|---|
id | true | dble_table的id字段 |
parent_id | 父表的id | |
increment_column | 全局序列 | |
join_column | 关联列 | |
paren_column | 父表的列 |
- 数据行:略
2.0.1.13.4 dble_table_sharding_node
表名:dble_table_sharding_node
含义:表和sharding_node关联信息
字段:
列名 主键 注释 id true dble_table的id字段 sharding_node true 分片节点 order sharding_node的顺序(对拆分表意义重大,从0开始计数) 数据行:略
2.0.1.14 dble_algorithm
表名:dble_algorithm
含义:拆分算法的配置
字段:
列名 主键 注释 name true 名称 key true 属性名称 value 属性值 is_file mapfile的显示格式(true:file,false:content)有些算法由于使用了mapfile,可能导致属性过多,这种情况最多展示1024字节,超过则显示文件名称 数据行:略
2.0.1.15 dble_entry系列
2.0.1.15.0 dble_entry
表名:dble_entry
含义:登录入口表(目前是用户或者用户+租户的模式)
字段:
列名 | 主键 | 注释 |
---|---|---|
id | true | 自增序列 |
type | 入口类型(username/conn_attr), 通过用户名识别或通过连接属性识别 | |
user_type | 是否为管理用户/读写分离用户/sharding用户 | |
username | 用户名 | |
password_encrypt | 密码 | |
encrypt_configured | 原本密码是否加密 | |
conn_attr_key | 连接属性键 ,目前支持tenant或者空 | |
conn_attr_value | 连接属性值 | |
white_ips | 白名单 | |
readonly | 是否只读 (读写分离用户不支持,填写-) | |
max_conn_count | 最大连接数限制 | |
blacklist | 黑名单 |
- 数据行:略
2.0.1.15.1 dble_entry_schema
表名:dble_entry_schema
含义:分库用户对应的schema的关系表
字段:
列名 | 主键 | 注释 |
---|---|---|
id | true | dble_entry表的id |
schema | true | 虚拟schema的名字 |
- 数据行:略
2.0.1.15.2 dble_rw_split_entry
表名:dble_rw_split_entry
含义:分库用户对应的schema的关系表
字段:
列名 | 主键 | 注释 |
---|---|---|
id | true | 自增序列(需要实现) |
type | 入口类型(username/conn_attr), 通过用户名识别或通过连接属性识别 | |
username | 用户名 | |
password_encrypt | 密码 | |
encrypt_configured | 是否启用加密 | |
conn_attr_key | 连接属性键 ,目前支持tenant或者空 | |
conn_attr_value | 连接属性值 | |
white_ips | 白名单 | |
max_conn_count | 最大连接数限制 | |
blacklist | 黑名单 | |
db_group | 对应的db_group的名字 |
逻辑主键
username、conn_attr_key、conn_attr_value数据行:略
2.0.1.15.3 dble_entry_table_privilege
表名:dble_entry_table_privilege
含义:分库用户的对于表的privilege权限
字段:
列名 | 主键 | 注释 |
---|---|---|
id | true | dble_entry表的id |
schema | true | 对应的schema的名字 |
table | true | 对应的table的名字 |
exist_metas | 对应table的元数据在dble中是否存在 | |
insert | 是否允许insert | |
update | 是否允许update | |
select | 是否允许select | |
delete | 是否允许delete | |
is_effective | 配置是否生效 |
- 数据行:略
2.0.1.16 dble_blacklist
表名:dble_blacklist
含义:黑名单信息
字段:
列名 | 主键 | 注释 |
---|---|---|
name | true | 名称 |
property_key | true | 黑名单属性key |
property_value | 黑名单属性value | |
user_configured | 是否是用户配置的 |
- 数据行:略
2.0.1.17 processlist
表名:processlist
含义:查看前端连接和后端连接对应关系(若前端连接没有对应的后端连接,显示NULL)
字段:
列名 | 主键 | 注释 |
---|---|---|
front_id | true | 前端连接id |
db_instance | 对应后端的实例name | |
mysql_id | true | 后端连接对应的 mysql 线程id |
user | 用户名 | |
front_host | 客户端主机名 | |
mysql_db | 后端连接默认数据库,来自于 mysql 'show processlist' 字段 db | |
command | mysql线程正在执行的指令类型,来自于 mysql 'show processlist' 字段 command | |
time | mysql线程处于当前state的时间,来自于 mysql 'show processlist' 字段 time | |
state | mysql线程执行状态,来自于 mysql 'show processlist' 字段 state | |
info | mysql线程执行语句,来自于 mysql 'show processlist' 字段 info |
- 数据行:略(类似show @@processlist)
2.0.1.18 dble_thread_usage
表名:dble_thread_usage
含义:线程使用率
字段:
列名 | 主键 | 注释 |
---|---|---|
thread_name | true | 线程名称 |
last_quarter_min | 最近15s平均使用率 | |
last_minute | 最近1min平均使用率 | |
last_five_minute | 最近5min平均使用率 |
- 数据行:略(类似show @@thread_used;)
2.0.1.19 dble_reload_status
表名:dble_reload_status
含义:最近的reload信息
字段:
列名 | 主键 | 注释 |
---|---|---|
index | true | reload对应的编号,能与日志中的[ RL ]日志编号相对应 |
cluster | 当前dble使用的集群方式 | |
reload_type | 最近的reload的类型 reload_matadata/reload_all/manager_insert/manager_update/mamager_delete | |
reload_status | 最近一次reload的执行状状态not_reloading/self_reload/meta_reload/waiting_others | |
last_reload_start | 起始时间 | |
last_reload_end | 结束时间 | |
trigger_type | 触发类型local_command/cluster_notify | |
end_type | 结束原因 |
- 数据行:略(类似show @@reload_status)
2.0.1.20 dble_xa_session
表名:dble_xa_session
含义:后端重试xa事务信息
字段:
列名 | 主键 | 注释 |
---|---|---|
front_id | true | 前端连接id |
xa_id | xa事务id | |
xa_state | xa事务状态 | |
sharding_node | true | xa提交失败的sharding_node名称,需要展开成多行 |
- 数据行:略(show @@session.xa)
2.0.1.21 dble_ddl_lock
表名:dble_ddl_lock
含义:当前dble内部未释放的ddl
字段:
列名 | 主键 | 注释 |
---|---|---|
schema | true | schema名称 |
table | true | table名称 |
sql | ddl sql语句 |
- 数据行:略(类似show @@ddl)
2.0.1.22 sql_statistic_by_frontend_by_backend_by_entry_by_user
表名:sql_statistic_by_frontend_by_backend_by_entry_by_user
含义:统计前端业务用户下发sql至分片(后端节点)的执行情况
字段:
列名 | 主键 | 注释 |
---|---|---|
entry | true | dble_entry表的id |
user | true | 业务用户(不包含管理端用户) |
frontend_host | true | 登录的ip地址 |
backend_host | true | 后端服务的ip地址 |
backend_port | true | 后端服务的端口 |
sharding_node | true | 分片节点 |
tx_count | false | 事务次数 |
tx_rows | false | 事务中影响或者检索的行数 |
tx_time | false | 事务耗时 |
sql_insert_count | false | insert命令执行的次数 |
sql_insert_rows | false | insert返回的影响行数 |
sql_insert_time | false | insert的耗时 |
sql_update_count | false | update命令执行的次数 |
sql_update_rows | false | update返回的影响行数 |
sql_update_time | false | update的耗时 |
sql_delete_count | false | delete命令执行的次数 |
sql_delete_rows | false | delete返回的影响行数 |
sql_delete_time | false | delete的耗时 |
sql_select_count | false | select命令执行的次数 |
sql_select_rows | false | dble获取后端节点返回的行数 |
sql_select_time | false | select的耗时 |
last_update_time | false | 此条记录的更新时间 |
- 数据如:
mysql> select * from sql_statistic_by_frontend_by_backend_by_entry_by_user; +-------+------+---------------+--------------+--------------+---------------+-------------+----------+---------+---------+------------------+-----------------+-----------------+------------------+-----------------+-----------------+------------------+-----------------+-----------------+------------------+-----------------+-----------------+-------------------------+ | entry | user | frontend_host | backend_host | backend_port | sharding_node | db_instance | tx_count | tx_rows | tx_time | sql_insert_count | sql_insert_rows | sql_insert_time | sql_update_count | sql_update_rows | sql_update_time | sql_delete_count | sql_delete_rows | sql_delete_time | sql_select_count | sql_select_rows | sql_select_time | last_update_time | +-------+------+---------------+--------------+--------------+---------------+-------------+----------+---------+---------+------------------+-----------------+-----------------+------------------+-----------------+-----------------+------------------+-----------------+-----------------+------------------+-----------------+-----------------+-------------------------+ | 3 | test | 127.0.0.1 | 10.186.63.8 | 24801 | dn1 | instanceM1 | 1 | 1 | 15293 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 15293 | 2021-07-09 11:18:10.525 | | 3 | test | 127.0.0.1 | 10.186.63.7 | 24801 | dn2 | instanceM2 | 1 | 3 | 13819 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 3 | 13819 | 2021-07-09 11:18:10.525 | +-------+------+---------------+--------------+--------------+---------------+-------------+----------+---------+---------+------------------+-----------------+-----------------+------------------+-----------------+-----------------+------------------+-----------------+-----------------+------------------+-----------------+-----------------+-------------------------+ 2 rows in set (0.00 sec)
2.0.1.23 sql_statistic_by_table_by_user_by_entry
表名:sql_statistic_by_table_by_user_by_entry
含义:统计前端业务用户下发sql各个表的情况
字段:
列名 | 主键 | 注释 |
---|---|---|
entry | true | dble_entry表的id |
user | true | 业务用户(不包含管理端用户) |
table | true | 表 |
sql_insert_count | false | insert命令执行的次数 |
sql_insert_rows | false | insert返回的影响行数 |
sql_insert_time | false | insert的耗时 |
sql_update_count | false | update命令执行的次数 |
sql_update_rows | false | update返回的影响行数 |
sql_update_time | false | update的耗时 |
sql_delete_count | false | delete命令执行的次数 |
sql_delete_rows | false | delete返回的影响行数 |
sql_delete_time | false | delete的耗时 |
sql_select_count | false | select命令执行的次数 |
sql_select_examined_rows | false | dble获取后端节点返回的行数 |
sql_select_rows | false | 发送前端的行数 |
sql_select_time | false | select的耗时 |
last_update_time | false | 此条记录的更新时间 |
- 数据如:
mysql> select * from sql_statistic_by_table_by_user_by_entry; +-------+------+---------------------+------------------+-----------------+-----------------+------------------+-----------------+-----------------+------------------+-----------------+-----------------+------------------+-----------------+--------------------------+-----------------+-------------------------+ | entry | user | table | sql_insert_count | sql_insert_rows | sql_insert_time | sql_update_count | sql_update_rows | sql_update_time | sql_delete_count | sql_delete_rows | sql_delete_time | sql_select_count | sql_select_rows | sql_select_examined_rows | sql_select_time | last_update_time | +-------+------+---------------------+------------------+-----------------+-----------------+------------------+-----------------+-----------------+------------------+-----------------+-----------------+------------------+-----------------+--------------------------+-----------------+-------------------------+ | 3 | test | testdb.tb_jump_hash | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 4 | 4 | 290440 | 2021-07-09 11:18:10.536 | | 3 | test | null | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 2131 | 2021-07-09 11:09:30.755 | +-------+------+---------------------+------------------+-----------------+-----------------+------------------+-----------------+-----------------+------------------+-----------------+-----------------+------------------+-----------------+--------------------------+-----------------+-------------------------+ 2 rows in set (0.01 sec)
2.0.1.24 sql_statistic_by_associate_tables_by_entry_by_user
表名:sql_statistic_by_associate_tables_by_entry_by_user
含义:统计前端业务用户下发sql关联表的情况
字段:
列名 | 主键 | 注释 |
---|---|---|
entry | true | dble_entry表的id |
user | true | 业务用户(不包含管理端用户) |
tables | true | 关联的表 |
sql_select_count | false | select命令执行的次数 |
sql_select_examined_rows | false | dble获取后端节点返回的行数 |
sql_select_rows | false | 发送前端的行数 |
sql_select_time | false | select的耗时 |
last_update_time | false | 此条记录的更新时间 |
- 数据如:
mysql> select * from sql_statistic_by_associate_tables_by_entry_by_user; +-------+------+-----------------------------------+------------------+-----------------+--------------------------+-----------------+-------------------------+ | entry | user | associate_tables | sql_select_count | sql_select_rows | sql_select_examined_rows | sql_select_time | last_update_time | +-------+------+-----------------------------------+------------------+-----------------+--------------------------+-----------------+-------------------------+ | 3 | test | testdb.tabler,testdb.tb_jump_hash | 1 | 168 | 46 | 92004 | 2021-07-09 11:20:16.392 | +-------+------+-----------------------------------+------------------+-----------------+--------------------------+-----------------+-------------------------+ 1 row in set (0.00 sec)
2.0.1.25 sql_log
表名:sql_log
含义:采样统计前端业务用户下发sql
字段:
列名 | 主键 | 注释 |
---|---|---|
sql_id | true | sql id |
sql_stmt | false | SQL语句(最长保留1024个字节) |
sql_digest | false | SQL语句digest(最长保留1024个字节) |
sql_type | false | SQL类型 |
tx_id | true | dble中事务的全局变量ID |
entry | false | dble_entry表的id |
user | false | 用户名 |
source_host | false | 来源IP |
source_port | false | 来源port |
rows | false | 返回前端的行数 |
examined_rows | false | 从后端抽取的行数 |
result_size | false | 结果集的字节大小 |
start_time | false | 开始时间,单位纳秒 |
duration | false | 持续时间,单位毫秒 |
- 数据如:
mysql> select * from sql_log; +--------+----------------------------------+----------------------------------+----------+-------+-------+------+-------------+-------------+------+---------------+---------------------+----------+ | sql_id | sql_stmt | sql_digest | sql_type | tx_id | entry | user | source_host | source_port | rows | examined_rows | start_time | duration | +--------+----------------------------------+----------------------------------+----------+-------+-------+------+-------------+-------------+------+---------------+---------------------+----------+ | 1 | show databases | show databases | Show | 1 | 3 | test | 127.0.0.1 | 8066 | 7 | 0 | 2021-07-09 11:09:30 | 7919460 | | 2 | show tables | show tables | Show | 2 | 3 | test | 127.0.0.1 | 8066 | 32 | 0 | 2021-07-09 11:09:30 | 14972767 | | 3 | select @@version_comment limit 1 | SELECT @@version_comment LIMIT ? | Select | 3 | 3 | test | 127.0.0.1 | 8066 | 1 | 0 | 2021-07-09 11:09:30 | 2131628 | | 4 | show tables | show tables | Show | 4 | 3 | test | 127.0.0.1 | 8066 | 32 | 0 | 2021-07-09 11:09:34 | 1428683 | +--------+----------------------------------+----------------------------------+----------+-------+-------+------+-------------+-------------+------+---------------+---------------------+----------+ 4 rows in set (0.04 sec)
2.0.1.26 sql_log_by_tx_by_entry_by_user
表名:sql_log_by_tx_by_entry_by_user
含义:sql log汇总统计
字段:
列名 | 主键 | 注释 |
---|---|---|
tx_id | false | dble中事务的全局变量ID |
entry | false | dble_entry表的id |
user | false | 用户名 |
source_host | false | 来源IP |
source_port | false | 来源port |
sql_ids | false | 事务包含的sql_id的聚合(最长保留1024个字节) |
sql_exec | false | 事务包含的SQL的个数 |
tx_duration | false | 事务经历的时间 |
busy_time | false | 事务内SQL的总运行时间 |
examined_rows | false | 从后端抽取的行数 |
- 数据如:
mysql> select * from sql_log_by_tx_by_entry_by_user; +-------+-------+------+-------------+-------------+---------+----------+-------------+-----------+---------------+ | tx_id | entry | user | source_host | source_port | sql_ids | sql_exec | tx_duration | busy_time | examined_rows | +-------+-------+------+-------------+-------------+---------+----------+-------------+-----------+---------------+ | 1 | 3 | test | 127.0.0.1 | 8066 | 1 | 1 | 7919460 | 7919460 | 0 | | 2 | 3 | test | 127.0.0.1 | 8066 | 2 | 1 | 14972767 | 14972767 | 0 | | 3 | 3 | test | 127.0.0.1 | 8066 | 3 | 1 | 2131628 | 2131628 | 0 | | 4 | 3 | test | 127.0.0.1 | 8066 | 4 | 1 | 1428683 | 1428683 | 0 | +-------+-------+------+-------------+-------------+---------+----------+-------------+-----------+---------------+ 4 rows in set (0.05 sec)
2.0.1.27 sql_log_by_digest_by_entry_by_user
sql_log_by_digest_by_entry_by_user
含义:sql log汇总统计
字段:
列名 | 主键 | 注释 |
---|---|---|
sql_digest | false | sql语句digest |
entry | false | dble_entry表的id |
user | false | 用户名 |
exec | false | 相同sql digest的sql语句执行次数 |
duration | false | sql语句的执行总时间 |
rows | false | 返回前端的行数 |
examined_rows | false | 从后端抽取的行数 |
avg_duration | false | 平均sql语句执行时间 |
- 数据如:
mysql> select * from sql_log_by_digest_by_entry_by_user; +----------------------------------+-------+------+------+----------+------+---------------+--------------+ | sql_digest | entry | user | exec | duration | rows | examined_rows | avg_duration | +----------------------------------+-------+------+------+----------+------+---------------+--------------+ | SELECT @@version_comment LIMIT ? | 3 | test | 1 | 2131628 | 1 | 0 | 2131628.0000 | | show databases | 3 | test | 1 | 7919460 | 7 | 0 | 7919460.0000 | | show tables | 3 | test | 2 | 16401450 | 64 | 0 | 714341.5000 | +----------------------------------+-------+------+------+----------+------+---------------+--------------+ 3 rows in set (0.02 sec)
2.0.1.28 sql_log_by_tx_digest_by_entry_by_user
sql_log_by_tx_digest_by_entry_by_user
含义:sql log汇总统计
字段:
列名 | 主键 | 注释 |
---|---|---|
tx_digest | false | sql_digest的聚合 |
exec | false | 相同tx_digest事务的执行次数 |
entry | false | dble_entry表的id |
user | false | 用户名 |
sql_exec | false | 事务包含的SQL的执行次数 |
source_host | false | 来源IP |
source_port | false | 来源port |
sql_ids | false | 事务包含的sql_id的聚合(最长保留1024个字节) |
tx_duration | false | 事务经历的时间 |
busy_time | false | 事务内SQL的总运行时间 |
examined_rows | false | 从后端抽取的行数 |
- 数据如:
mysql> select * from sql_log_by_tx_digest_by_entry_by_user; +----------------------------------+------+------+-------+----------+-------------+-------------+---------+-------------+-----------+---------------+ | tx_digest | exec | user | entry | sql_exec | source_host | source_port | sql_ids | tx_duration | busy_time | examined_rows | +----------------------------------+------+------+-------+----------+-------------+-------------+---------+-------------+-----------+---------------+ | SELECT @@version_comment LIMIT ? | 1 | test | 3 | 1 | 127.0.0.1 | 8066 | 3 | 2131628 | 2131628 | 0 | | show databases | 1 | test | 3 | 1 | 127.0.0.1 | 8066 | 1 | 7919460 | 7919460 | 0 | | show tables | 2 | test | 3 | 2 | 127.0.0.1 | 8066 | 2,4 | 16401450 | 16401450 | 0 | +----------------------------------+------+------+-------+----------+-------------+-------------+---------+-------------+-----------+---------------+ 3 rows in set (0.03 sec)
2.0.1.29 dble_config
表名:dble_config
含义:当前dble内存中的配置信息(db、sharding、user、sequence)
字段:
列名 | 主键 | 注释 |
---|---|---|
content | false | db、sharding、user、sequence的配置信息(json字符串) |
- 数据行:略
- 使用方式见: dble_config表
2.0.1.30 dble_xa_recover
表名:dble_xa_recover
含义:查看所有存活的主节点下XA情况
字段:
列名 | 主键 | 注释 |
---|---|---|
dbgroup | false | 节点组 |
instance | false | 节点名 |
ip | false | 节点ip |
port | false | 节点端口 |
formatid | false | mysql中xa_recover表中的formatid字段 |
gtrid_length | false | mysql中xa_recover表中的gtrid_length字段 |
bqual_length | false | mysql中xa_recover表中的bqual_length字段 |
data | false | mysql中xa_recover表中的data字段 |
- 数据行:略
2.0.1.31 dble_flow_control
表名:dble_flow_control
含义:查看所有连接的流量控制状态
字段:
列名 | 主键 | 注释 |
---|---|---|
connection_type | true | 连接的类型,固定为MySQLConnection/ServerConnection其中之一 |
connection_id | true | 连接在dble中的ID信息,可以通过ID查找日志 |
connection_info | false | 接详细信息,使用端口,IP地址,用户,MySQL中的连接ID等 |
writing_queue_bytes | false | 当前连接的准备写出的队列里积压的字节数 |
reading_queue_bytes | false | 当前连接的已经读取的队列里积压的字节数,前端连接不支持此功能,恒为null |
flow_controlled | false | 当前连接是否处于被流控的状态 |
- 数据行:略
2.0.1.32 session_connections_active_ratio
表名:session_connections_active_ratio
含义:查看前端连接分别在 近30s/1min/5min 期间的繁忙率
实际以毫秒计算,比如:近30s繁忙时间为15000ms,则繁忙率:(15000ms/30000ms)*100%=50%字段:
列名 | 主键 | 注释 |
---|---|---|
session_conn_id | true | 前端连接id |
last_half_minute | false | 近30s 的繁忙率(实际以毫秒计算) |
last_minute | false | 近1min 的繁忙率 |
last_five_minute | false | 近5min的繁忙率 |
- 数据行:略
2.0.1.33 session_connections_associate_thread
表名:session_connections_associate_thread
含义:查看当前时间前端连接使用的线程情况
字段:
列名 | 主键 | 注释 |
---|---|---|
session_conn_id | true | 前端连接id |
thread_name | true | 线程名 |
- 数据行:略
2.0.1.34 backend_connections_associate_thread
表名:backend_connections_associate_thread
含义:查看当前时间后端连接使用的线程情况
字段:
列名 | 主键 | 注释 |
---|---|---|
backend_conn_id | true | 后端连接id |
thread_name | true | 线程名 |
- 数据行:略
2.0.1.35 dble_cluster_renew_thread
表名:dble_cluster_renew_thread
含义:集群下的renew线程
字段:
列名 | 主键 | 注释 |
---|---|---|
renew_thread | true | renew线程名 |
- 数据行:略
2.0.1.32 recycling_resource
表名:recycling_resource
含义:查看延迟关闭的资源
字段:
列名 | 主键 | 注释 |
---|---|---|
type | false | 资源类型,取值有:dbGroup/dbInstance/backendConnection |
info | false | 资源的详情 |
- 数据行:略
2.0.1.33 dble_memory_resident
表名:dble_memory_resident
含义:显示当前未回收的堆外内存,仅在开启enableMemoryBufferMonitor后有效
字段:
列名 | 主键 | 注释 |
---|---|---|
id | true | 唯一 id,也为 buffer 的地址 |
stacktrace | false | buffer 分配的堆栈 |
buffer_type | false | buffer 的用途(可能值: NORMAL(常规)/HEARTBEAT(心跳)/POOL(连接池)) |
allocate_size | false | buffer 期望分配的大小(非实际大小,实际大小还会向上取整取bufferPoolChunkSize的整数倍) |
allocate_time | false | buffer 分配的时间点 |
alive_second | false | buffer 存活的时间 |
sql | false | 与该 buffer 相关的 sql,可能为空,可能是<<FRONT>>表示前端登录握手,<<BACK>>表示后端登录握手 |
- 数据行:略
2.0.1.34 dble_ap_node
表名:dble_ap_node
含义:ap_node配置及状态
字段:
列名 | 主键 | 注释 |
---|---|---|
name | true | 名称 |
db_group | db_group名 | |
db_schema | db_schema名 |
- 数据行:略
2.0.2 支持INSERT/UPDATE/DELETE的语法&表格
为满足读写分离的场景,对部分配置表格支持增删改功能
2.0.2.0 INSERT Syntax
INSERT
[INTO] tbl_name
[(col_name [, col_name] ...)]
{VALUES | VALUE} (value_list) [, (value_list)] ...
INSERT
[INTO] tbl_name
SET assignment_list
注意:
- 不支持 INSERT ...SELECT ,LOW_PRIORITY,DELAYED,HIGH_PRIORITY,IGNORE,ON DUPLICATE KEY UPDATE,PARTITION
2.0.2.1 UPDATE Syntax
UPDATE table_reference
SET assignment_list
WHERE where_condition
value:
{expr | DEFAULT}
assignment:
col_name = value
assignment_list:
assignment [, assignment]
注意:
- 不支持多表更新
- 不支持子查询
- 不支持修改主键(物理主键、逻辑主键)
- 不支持LOW_PRIORITY,IGNORE,ORDER BY,LIMIT ,PARTITION
- 不支持不带条件(where)
- 不支持别名
2.0.2.2 DELETE Syntax
DELETE FROM tbl_name WHERE where_condition
注意:
- 不支持多表删除
- 不支持子查询
- 不支持LOW_PRIORITY,IGNORE,ORDER BY,LIMIT ,PARTITION
- 不支持不带条件(where)
- 不支持别名
2.0.2.3 TRUNCATE Syntax
TRUNCATE [TABLE] tbl_name
注意:
- 暂无
2.0.2.4 支持INSERT/UPDATE/DELETE的表格
2.0.2.4.0 dble_db_group
- 不可写列:active
2.0.2.4.1 dble_db_instance
- 不可写列:active_conn_count、idle_conn_count、read_conn_request、write_conn_request、last_heartbeat_ack_timestamp、last_heartbeat_ack、heartbeat_status、heartbeat_failure_in_last_5min
注:由于dble_db_group、dble_db_instance的结构特殊性(整体存储在配置文件db.xml文件中),所以插入一个新的Mysql实例组时需先插入dble_db_group,紧接着插入相对应的dble_db_instance,才能保证实例组准确落盘;如果不遵循该插入顺序会导致数据不一致等未知问题
2.0.2.4.2 dble_rw_split_entry
- 不可写列:id、blacklist、type
2.0.2.4.3 dble_thread_pool
- 只支持UPDATE,不支持INSERT/DELETE
- 只能更新列:core_pool_size,其余列不可更新
注:
1、由于JDK原生线程池(ThreadPoolExecutor)扩缩容机制问题,新建的线程和即将被回收的线程需要一定的时机才会被处理,所以设置core_pool_size后可能并不是立即生效,有一定的延迟性
2、不支持调整AIO场景下的NIOFrontRW 、NIOBackendRW参数,只支持NIO场景下的NIOFrontRW 、NIOBackendRW参数
3、避免在高并发的时候调整线程池数目
2.0.2.5 支持TRUNCATE的表格
sql_statistic_by_frontend_by_backend_by_entry_by_user、sql_statistic_by_table_by_user_by_entry、sql_statistic_by_associate_tables_by_entry_by_user、 sql_log