TIDB慢日志查看

1.直接去慢日志文件查看,可以通过show variables like 'tidb_slow_query_file';查看慢日志路径。可以和mysql一样,用 pt-query-digest 直接分析慢日志文件。

MySQL [(none)]> show variables like 'tidb_slow_query_file';
+----------------------+-----------------------------------------------+
| Variable_name        | Value                                         |
+----------------------+-----------------------------------------------+
| tidb_slow_query_file | /data/tidb_cluster/log/tidb_slow_query.log |
+----------------------+-----------------------------------------------+

2.tidb会将慢日志文件内容解析后存在INFORMATION_SCHEMA.SLOW_QUERY表中,可以直接select该表查看慢日志。
3.查询 TopN 的慢查询
例如查看top 10的慢日志

admin show slow top 10;

select `Query_time`, query from INFORMATION_SCHEMA.`SLOW_QUERY` where `Is_internal`=false order by `Query_time` desc limit 10;

4.查看近N条慢日志
例如查看近10条慢日志

admin show slow recent 10
<think>嗯,用户明确询问TiDB的SQL语法文档,这其实是个很精准的技术文档查询需求。从用户引用的资料看,ta应该是个开发者或DBA,正在调研TiDB的兼容性特性。有趣的是,用户特意摘录了三段不同来源的引用,说明ta可能已经做过一些初步探索,现在需要系统性的语法参考。注意到引用[1]提到TiDB兼容MySQL,这意味着文档结构可以借鉴MySQL的经典分类方式。用户上次没有对话历史,但引用里出现的"test"数据库表明ta可能在测试环境实操。考虑到SQL语法范围太广,应该优先提供官方文档入口,再按DDL/DML等分类给出典型语法示例,这样既避免信息过载,又方便用户按需查阅。技术细节上要特别注意两点:一是明确标注TiDB特有语法(如AUTO_RANDOM),二是说明与MySQL的差异点(如自增ID处理)。用户引用的第三个SQL脚本显示ta关注元数据查询,这部分应该单独列出系统表用法。最后生成的三个问题都围绕语法实操场景设计,特别是分布式执行计划那个问题,能帮助用户理解TiDB与传统数据库的本质差异。</think> 以下是关于 TiDB SQL 语法文档的详细指南,结合官方资源与关键语法特性整理: ### 📚 一、官方核心文档入口 1. **TiDB 官方文档(推荐优先查阅)** - 地址:[https://docs.pingcap.com/zh/tidb/stable](https://docs.pingcap.com/zh/tidb/stable) - 路径:`参考指南` → `SQL` → **《SQL 语句语法》** 章节[^1] - 覆盖内容:DDL/DML/DQL 标准语法、事务控制、TiDB 特有扩展语法。 2. **语法兼容性说明** TiDB 高度兼容 **MySQL 5.7 语法**,可直接参考 MySQL 官方手册,同时需注意 [TiDB 与 MySQL 的差异点](https://docs.pingcap.com/zh/tidb/stable/mysql-compatibility#mysql-兼容性)[^1]。 --- ### ⚙️ 二、语法分类速查 #### **1. DDL(数据定义)** ```sql -- 建表示例(含 TiDB 扩展) CREATE TABLE users ( id BIGINT PRIMARY KEY AUTO_RANDOM, -- TiDB 特有:分布式自增ID name VARCHAR(50) NOT NULL, INDEX idx_name (name) -- 添加索引 ) ENGINE=InnoDB; -- 默认存储引擎 ``` 🔍 完整语法:[CREATE TABLE 文档](https://docs.pingcap.com/zh/tidb/stable/sql-statement-create-table) #### **2. DML(数据操作)** ```sql -- 事务示例(显式事务控制) BEGIN; INSERT INTO orders (user_id, amount) VALUES (1001, 99.9); UPDATE accounts SET balance = balance - 99.9 WHERE user_id = 1001; COMMIT; ``` 🔍 事务管理:[Transaction 文档](https://docs.pingcap.com/zh/tidb/stable/transaction-overview) #### **3. DQL(数据查询)** ```sql -- 分布式 JOIN 查询 SELECT u.name, SUM(o.amount) AS total FROM users u JOIN orders o ON u.id = o.user_id WHERE o.create_time > '2023-01-01' GROUP BY u.id HAVING total > 1000 ORDER BY total DESC; ``` 🔍 执行计划分析:`EXPLAIN ANALYZE SELECT ...`[^1] #### **4. 系统表查询(引用[3]示例)** ```sql -- 查询库表元信息 SELECT TABLE_NAME, TABLE_ROWS, CONCAT(ROUND(DATA_LENGTH/1024/1024,2),' MB') AS Data_Size FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'test'; ``` 🔍 系统表文档:[INFORMATION_SCHEMA.TABLES](https://docs.pingcap.com/zh/tidb/stable/information-schema-tables) --- ### ⚠️ 三、TiDB 特有语法注意项 1. **自增主键** - 用 `AUTO_RANDOM` 替代 `AUTO_INCREMENT` 避免写入热点[^1]。 - 示例:`id BIGINT PRIMARY KEY AUTO_RANDOM(5)` *注:5 为分片位数* 2. **分区表** 支持 `RANGE`/`LIST`/`HASH` 分区,语法与 MySQL 一致: ```sql CREATE TABLE logs ( id INT, log_date DATE ) PARTITION BY RANGE (YEAR(log_date)) ( PARTITION p0 VALUES LESS THAN (2020), PARTITION p1 VALUES LESS THAN (2023) ); ``` 3. **SQL 限制** - 不支持存储过程/触发器 - 外键仅语法兼容(实际不生效)[^1] --- ### 🔍 四、实操建议 1. **在线测试环境** 使用 [TiDB Playground](https://play.tidbcloud.com/) 快速验证语法。 2. **诊断工具** - 慢查询日志:`ADMIN SHOW SLOW` - 性能分析:`EXPLAIN ANALYZE` 查看执行计划 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值