网站首页 > 资源文章 正文
注意优化器需要mysql客户端5.7.7版本以上支持,针对之前的版本则需使用如下命令:
mysql -h 127.0.0.1 -P 4000 -uroot --comments
--查询MySQL 客户端版本:
#mysql --version
mysql Ver 8.0.12 for linux-glibc2.12 on x86_64 (MySQL Community Server - GPL)
或者:
# mysql --version
mysql Ver 14.14 Distrib 5.7.22-22, for Linux (x86_64) using 6.2
Optimizer Hint
TiDB 在 MySQL 的 Optimizer Hint 语法上,增加了一些 TiDB 专有的 Hint 语法, 使用这些 Hint 的时候,TiDB 优化器会尽量使用指定的算法,在某些场景下会比默认算法更优。TiDB使用的hint语法和Oracle的语法类似。
TiDB支持的连接类型包括:
sort merge join
nested loop join
hash join .
示例如下:
TIDB_SMJ(t1, t2)
SELECT /*+ TIDB_SMJ(t1, t2) */ * from t1,t2 where t1.id = t2.id
提示优化器使用 Sort Merge Join 算法,这个算法通常会占用更少的内存,但执行时间会更久。 当数据量太大,或系统内存不足时,建议尝试使用。
TIDB_INLJ(t1, t2)
SELECT /*+ TIDB_INLJ(t1, t2) */ * from t1,t2 where t1.id = t2.id
提示优化器使用 Index Nested Loop Join 算法,这个算法可能会在某些场景更快,消耗更少系统资源,有的场景会更慢,消耗更多系统资源。对于外表经过 WHERE 条件过滤后结果集较小(小于 1 万行)的场景,可以尝试使用。TIDB_INLJ()中的参数是建立查询计划时,驱动表(外表)的候选表。即TIDB_INLJ(t1)只会考虑使用t1作为驱动表构建查询计划。
TIDB_HJ(t1, t2)
SELECT /*+ TIDB_HJ(t1, t2) */ * from t1,t2 where t1.id = t2.id 提示优化器使用 Hash Join 算法,这个算法多线程并发执行,执行速度较快,但会消耗较多内存。
_tidb_rowid
这个是一个 TiDB 的隐藏列,代表隐式的 ROW ID 的列名,只存在于 PK 非整数或没有 PK 的表上,可以进行增减改查的操作。
SELECT 语句示例:SELECT *, _tidb_rowid from t;
INSERT 语句示例:INSERT t (c, _tidb_rowid) VALUES (1, 1);
UPDATE 语句示例:UPDATE t SET c = c + 1 WHERE _tidb_rowid = 1;
DELETE 语句示例:DELETE FROM t WHERE _tidb_rowid = 1;
SHARD_ROW_ID_BITS
这个 TABLE OPTION 是用来设置隐式 _tidb_rowid 的分片数量的 bit 位数。
对于 PK 非整数或没有 PK 的表,TiDB 会使用一个隐式的自增 rowid,大量 INSERT 时会把数据集中写入单个 region,造成写入热点。 通过设置 SHARD_ROW_ID_BITS 可以把 rowid 打散写入多个不同的 region,缓解写入热点问题。 但是设置的过大会造成 RPC 请求数放大,增加 CPU 和网络开销。
SHARD_ROW_ID_BITS = 4 代表 16 个分片, SHARD_ROW_ID_BITS = 6 表示 64 个分片,SHARD_ROW_ID_BITS = 0 就是默认值 1 个分片 。
CREATE TABLE 语句示例: CREATE TABLE t (c int) SHARD_ROW_ID_BITS = 4;
ALTER TABLE 语句示例: ALTER TABLE t SHARD_ROW_ID_BITS = 4;
猜你喜欢
- 2025-05-08 ORACLE 体系 - 12(上)(oracle数据库体系)
- 2025-05-08 22、ORM框架(orm的框架)
- 2025-05-08 回答:我不小心把公司的数据库给删了,该不该离职?
- 2025-05-08 MySQL三大日志:binlog、redolog、undolog全解析
- 2025-05-08 数据库基础详解:存储过程、视图、游标、SQL语句优化以及索引
- 2025-05-08 Dify工具使用全场景:彩票信息保存入库 (应用篇·第2期)
- 2025-05-08 MySQL体系架构(mysql数据库架构图)
- 2025-05-08 看这篇就够了!MySQL 索引知识点超全总结
- 2025-05-08 orcl数据库查询重复数据及删除重复数据方法
- 2025-05-08 浅聊MySQL索引分类(mysql索引类型详解)
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- 电脑显示器花屏 (79)
- 403 forbidden (65)
- linux怎么查看系统版本 (54)
- 补码运算 (63)
- 缓存服务器 (61)
- 定时重启 (59)
- plsql developer (73)
- 对话框打开时命令无法执行 (61)
- excel数据透视表 (72)
- oracle认证 (56)
- 网页不能复制 (84)
- photoshop外挂滤镜 (58)
- 网页无法复制粘贴 (55)
- vmware workstation 7 1 3 (78)
- jdk 64位下载 (65)
- phpstudy 2013 (66)
- 卡通形象生成 (55)
- psd模板免费下载 (67)
- shift (58)
- localhost打不开 (58)
- 检测代理服务器设置 (55)
- frequency (66)
- indesign教程 (55)
- 运行命令大全 (61)
- ping exe (64)
本文暂时没有评论,来添加一个吧(●'◡'●)