From 1c73ff13fbe2b4d102e237fb2eb6b019a95357d5 Mon Sep 17 00:00:00 2001 From: TomShawn <41534398+TomShawn@users.noreply.github.com> Date: Tue, 28 Jul 2020 18:53:34 +0800 Subject: [PATCH 1/2] cherry pick #4027 to release-3.1 Signed-off-by: ti-srebot --- TOC.md | 222 +++++++++++++++++++++++++++++++++++++++++ mysql-compatibility.md | 10 ++ sql-mode.md | 36 +++---- 3 files changed, 250 insertions(+), 18 deletions(-) diff --git a/TOC.md b/TOC.md index 62bf1a52e7d9..34d64a1d17bf 100644 --- a/TOC.md +++ b/TOC.md @@ -6,6 +6,7 @@ ## 目录 + 关于 TiDB +<<<<<<< HEAD - [TiDB 简介](/overview.md) + Benchmark 测试 - [如何用 Sysbench 测试 TiDB](/benchmark/benchmark-tidb-using-sysbench.md) @@ -76,6 +77,227 @@ - [集群配置诊断](/troubleshoot-tidb-cluster.md) - [TiDB Lightning 故障诊断](/troubleshoot-tidb-lightning.md) + 参考手册 +======= + + [TiDB 简介](/overview.md) + + [What's New in TiDB 4.0](/whats-new-in-tidb-4.0.md) + + [基本功能](/basic-features.md) + + [与 MySQL 的兼容性](/mysql-compatibility.md) + + [使用限制](/tidb-limitations.md) + + [荣誉列表](/credits.md) ++ 快速上手 + + [快速上手指南](/quick-start-with-tidb.md) + + [SQL 基本操作](/basic-sql-operations.md) ++ 部署集群 + + [软硬件环境需求](/hardware-and-software-requirements.md) + + [环境与系统配置检查](/check-before-deployment.md) + + 配置拓扑结构 + + [最小部署拓扑结构](/minimal-deployment-topology.md) + + [TiFlash 部署拓扑](/tiflash-deployment-topology.md) + + [TiCDC 部署拓扑](/ticdc-deployment-topology.md) + + [TiDB Binlog 部署拓扑](/tidb-binlog-deployment-topology.md) + + [跨机房部署拓扑结构](/geo-distributed-deployment-topology.md) + + [混合部署拓扑结构](/hybrid-deployment-topology.md) + + 安装与启动 + + Linux 环境 + + [使用 TiUP 部署(推荐)](/production-deployment-using-tiup.md) + + [使用 TiUP 离线部署(推荐)](/production-offline-deployment-using-tiup.md) + + [使用 Ansible 部署](/online-deployment-using-ansible.md) + + [使用 Ansible 离线部署](/offline-deployment-using-ansible.md) + + [验证集群状态](/post-installation-check.md) + + 性能测试报告及重现指南 + + [如何用 Sysbench 测试 TiDB](/benchmark/benchmark-tidb-using-sysbench.md) + + [如何对 TiDB 进行 TPC-C 测试](/benchmark/benchmark-tidb-using-tpcc.md) + + [Sysbench 性能对比 - v4.0 对比 v3.0](/benchmark/benchmark-sysbench-v4-vs-v3.md) + + [TPC-H 性能对比 - v4.0 对比 v3.0](/benchmark/v4.0-performance-benchmarking-with-tpch.md) + + [TPC-C 性能对比 - v4.0 对比 v3.0](/benchmark/v4.0-performance-benchmarking-with-tpcc.md) + + [Sysbench 性能对比 - v3.0 对比 v2.1](/benchmark/v3.0-performance-benchmarking-with-sysbench.md) + + [TPC-C 性能对比 - v3.0 对比 v2.1](/benchmark/v3.0-performance-benchmarking-with-tpcc.md) + + [线上负载与 ADD INDEX 相互影响测试](/benchmark/online-workloads-and-add-index-operations.md) ++ 数据迁移 + + [概述](/migration-overview.md) + + 从 MySQL 迁移至 TiDB + + [从 Mydumper 文件迁移](/migrate-from-mysql-mydumper-files.md) + + [使用 DM 工具从 Amazon Aurora MySQL 迁移](/migrate-from-aurora-mysql-database.md) + + 从 CSV 文件迁移至 TiDB + + [使用 TiDB Lightning 导入 CSV 文件](/tidb-lightning/migrate-from-csv-using-tidb-lightning.md) + + [使用 LOAD DATA 语句导入 CSV 文件](/sql-statements/sql-statement-load-data.md) + + [从 SQL 文件迁移到 TiDB](/migrate-from-mysql-mydumper-files.md) ++ 运维操作 + + 升级 TiDB 版本 + + [使用 TiUP 升级(推荐)](/upgrade-tidb-using-tiup.md) + + [使用 TiUP 离线升级(推荐)](/upgrade-tidb-using-tiup-offline.md) + + [使用 TiDB Operator](https://docs.pingcap.com/zh/tidb-in-kubernetes/v1.1/upgrade-a-tidb-cluster) + + [使用 TiDB Ansible](/upgrade-tidb-using-ansible.md) + + 扩缩容 + + [使用 TiUP(推荐)](/scale-tidb-using-tiup.md) + + [使用 TiDB Ansible](/scale-tidb-using-ansible.md) + + [使用 TiDB Operator](https://docs.pingcap.com/zh/tidb-in-kubernetes/v1.1/scale-a-tidb-cluster) + + 备份与恢复 + + 使用 BR 工具(推荐) + + [使用 BR 进行备份与恢复](/br/backup-and-restore-tool.md) + + [BR 备份与恢复场景示例](/br/backup-and-restore-use-cases.md) + + [BR 存储](/br/backup-and-restore-storages.md) + + [使用 Dumpling 和 TiDB Lightning 进行备份与恢复(推荐)](/backup-and-restore-using-dumpling-lightning.md) + + [使用 Mydumper 和 TiDB Lightning 进行备份与恢复](/backup-and-restore-using-mydumper-lightning.md) + + [读取历史数据](/read-historical-data.md) + + [修改时区](/configure-time-zone.md) + + [日常巡检](/daily-check.md) + + [TiCDC 运维操作及任务管理](/ticdc/manage-ticdc.md) + + [TiFlash 常用运维操作](/tiflash/maintain-tiflash.md) + + [TiUP 常用运维操作](/maintain-tidb-using-tiup.md) + + [Ansible 常用运维操作](/maintain-tidb-using-ansible.md) ++ 监控与告警 + + [监控框架概述](/tidb-monitoring-framework.md) + + [监控 API](/tidb-monitoring-api.md) + + [手动部署监控](/deploy-monitoring-services.md) + + [TiDB 集群报警规则与处理方法](/alert-rules.md) + + [TiFlash 报警规则与处理方法](/tiflash/tiflash-alert-rules.md) ++ 故障诊断 + + [定位慢查询](/identify-slow-queries.md) + + [SQL 诊断](/system-tables/system-table-sql-diagnostics.md) + + [定位消耗系统资源多的查询](/identify-expensive-queries.md) + + [SQL 语句统计](/statement-summary-tables.md) + + [TiDB 集群常见问题](/troubleshoot-tidb-cluster.md) + + [TiDB 集群问题导图](/tidb-troubleshooting-map.md) + + [热点问题处理](/troubleshoot-hot-spot-issues.md) + + [CPU 占用过多导致读写延迟增加](/troubleshoot-cpu-issues.md) + + [写冲突与写性能下降](/troubleshoot-write-conflicts.md) + + [磁盘 I/O 过高](/troubleshoot-high-disk-io.md) + + [锁冲突与 TTL 超时](/troubleshoot-lock-conflicts.md) + + [TiCDC 常见问题](/ticdc/troubleshoot-ticdc.md) + + [TiFlash 常见问题](/tiflash/troubleshoot-tiflash.md) ++ 性能调优 + + 系统调优 + + [操作系统性能参数调优](/tune-operating-system.md) + + 软件调优 + + 配置 + + [TiDB 内存调优](/configure-memory-usage.md) + + [TiKV 线程调优](/tune-tikv-thread-performance.md) + + [TiKV 内存调优](/tune-tikv-memory-performance.md) + + [TiKV Follower Read](/follower-read.md) + + [TiFlash 调优](/tiflash/tune-tiflash-performance.md) + + [下推计算结果缓存](/coprocessor-cache.md) + + SQL 性能调优 + + [SQL 性能调优概览](/sql-tuning-overview.md) + + [理解 TiDB 执行计划](/query-execution-plan.md) + + SQL 优化 + + [SQL 优化流程简介](/sql-optimization-concepts.md) + + 逻辑优化 + + [逻辑优化概览](/sql-logical-optimization.md) + + [子查询相关的优化](/subquery-optimization.md) + + [列裁剪](/column-pruning.md) + + [关联子查询去关联](/correlated-subquery-optimization.md) + + [Max/Min 消除](/max-min-eliminate.md) + + [谓词下推](/predicate-push-down.md) + + [分区裁剪](/partition-pruning.md) + + [TopN 和 Limit 下推](/topn-limit-push-down.md) + + [Join Reorder](/join-reorder.md) + + 物理优化 + + [物理优化概览](/sql-physical-optimization.md) + + [索引的选择](/choose-index.md) + + [统计信息简介](/statistics.md) + + [错误索引的解决方案](/wrong-index-solution.md) + + [Distinct 优化](/agg-distinct-optimization.md) + + [执行计划缓存](/sql-prepare-plan-cache.md) + + 控制执行计划 + + [控制执行计划概览](/control-execution-plan.md) + + [Optimizer Hints](/optimizer-hints.md) + + [执行计划管理](/sql-plan-management.md) + + [优化规则及表达式下推的黑名单](/blacklist-control-plan.md) ++ 教程 + + [同城多中心部署](/multi-data-centers-in-one-city-deployment.md) + + [两地三中心部署](/three-data-centers-in-two-cities-deployment.md) + + 最佳实践 + + [TiDB 最佳实践](/best-practices/tidb-best-practices.md) + + [Java 应用开发最佳实践](/best-practices/java-app-best-practices.md) + + [HAProxy 最佳实践](/best-practices/haproxy-best-practices.md) + + [高并发写入场景最佳实践](/best-practices/high-concurrency-best-practices.md) + + [Grafana 监控最佳实践](/best-practices/grafana-monitor-best-practices.md) + + [PD 调度策略最佳实践](/best-practices/pd-scheduling-best-practices.md) + + [海量 Region 集群调优](/best-practices/massive-regions-best-practices.md) + + [Placement Rules 使用文档](/configure-placement-rules.md) + + [Load Base Split 使用文档](/configure-load-base-split.md) + + [Store Limit 使用文档](/configure-store-limit.md) ++ TiDB 生态工具 + + [功能概览](/ecosystem-tool-user-guide.md) + + [适用场景](/ecosystem-tool-user-case.md) + + [工具下载](/download-ecosystem-tools.md) + + Backup & Restore (BR) + + [BR 常见问题](/br/backup-and-restore-faq.md) + + [使用 BR 进行备份和恢复](/br/backup-and-restore-tool.md) + + [BR 备份与恢复场景示例](/br/backup-and-restore-use-cases.md) + + TiDB Binlog + + [概述](/tidb-binlog/tidb-binlog-overview.md) + + [快速上手](/tidb-binlog/get-started-with-tidb-binlog.md) + + [部署使用](/tidb-binlog/deploy-tidb-binlog.md) + + [运维管理](/tidb-binlog/maintain-tidb-binlog-cluster.md) + + [配置说明](/tidb-binlog/tidb-binlog-configuration-file.md) + + [Pump](/tidb-binlog/tidb-binlog-configuration-file.md#pump) + + [Drainer](/tidb-binlog/tidb-binlog-configuration-file.md#drainer) + + [版本升级](/tidb-binlog/upgrade-tidb-binlog.md) + + [监控告警](/tidb-binlog/monitor-tidb-binlog-cluster.md) + + [增量恢复](/tidb-binlog/tidb-binlog-reparo.md) + + [binlogctl 工具](/tidb-binlog/binlog-control.md) + + [Kafka 自定义开发](/tidb-binlog/binlog-slave-client.md) + + [TiDB Binlog Relay Log](/tidb-binlog/tidb-binlog-relay-log.md) + + [集群间双向同步](/tidb-binlog/bidirectional-replication-between-tidb-clusters.md) + + [术语表](/tidb-binlog/tidb-binlog-glossary.md) + + 故障诊断 + + [故障诊断](/tidb-binlog/troubleshoot-tidb-binlog.md) + + [常见错误修复](/tidb-binlog/handle-tidb-binlog-errors.md) + + [FAQ](/tidb-binlog/tidb-binlog-faq.md) + + TiDB Lightning + + [概述](/tidb-lightning/tidb-lightning-overview.md) + + [快速上手教程](/get-started-with-tidb-lightning.md) + + [部署执行](/tidb-lightning/deploy-tidb-lightning.md) + + [参数说明](/tidb-lightning/tidb-lightning-configuration.md) + + 主要功能 + + [断点续传](/tidb-lightning/tidb-lightning-checkpoints.md) + + [表库过滤](/table-filter.md) + + [CSV 支持](/tidb-lightning/migrate-from-csv-using-tidb-lightning.md) + + [TiDB-backend](/tidb-lightning/tidb-lightning-tidb-backend.md) + + [Web 界面](/tidb-lightning/tidb-lightning-web-interface.md) + + [监控告警](/tidb-lightning/monitor-tidb-lightning.md) + + [故障诊断](/troubleshoot-tidb-lightning.md) + + [FAQ](/tidb-lightning/tidb-lightning-faq.md) + + [术语表](/tidb-lightning/tidb-lightning-glossary.md) + + [TiCDC](/ticdc/ticdc-overview.md) + + [Dumpling](/dumpling-overview.md) + + sync-diff-inspector + + [概述](/sync-diff-inspector/sync-diff-inspector-overview.md) + + [不同库名或表名的数据校验](/sync-diff-inspector/route-diff.md) + + [分库分表场景下的数据校验](/sync-diff-inspector/shard-diff.md) + + [TiDB 主从集群的数据校验](/sync-diff-inspector/upstream-downstream-diff.md) + + [Loader](/loader-overview.md) + + [Mydumper](/mydumper-overview.md) + + [Syncer](/syncer-overview.md) + + TiSpark + + [TiSpark 快速上手](/get-started-with-tispark.md) + + [TiSpark 用户指南](/tispark-overview.md) ++ 参考指南 + + 架构 + + [概述](/tidb-architecture.md) + + [存储](/tidb-storage.md) + + [计算](/tidb-computing.md) + + [调度](/tidb-scheduling.md) + + 监控指标 + + [Overview 面板](/grafana-overview-dashboard.md) + + [TiDB 面板](/grafana-tidb-dashboard.md) + + [PD 面板](/grafana-pd-dashboard.md) + + [TiKV 面板](/grafana-tikv-dashboard.md) + + [TiFlash 监控指标](/tiflash/monitor-tiflash.md) + + 安全加固 + + [为 TiDB 客户端服务端间通信开启加密传输](/enable-tls-between-clients-and-servers.md) + + [为 TiDB 组件间通信开启加密传输](/enable-tls-between-components.md) + + [生成自签名证书](/generate-self-signed-certificates.md) + + [静态加密](/encryption-at-rest.md) + + 权限 + + [与 MySQL 安全特性差异](/security-compatibility-with-mysql.md) + + [权限管理](/privilege-management.md) + + [TiDB 用户账户管理](/user-account-management.md) + + [基于角色的访问控制](/role-based-access-control.md) + + [TiDB 证书鉴权使用指南](/certificate-authentication.md) +>>>>>>> 2505f1a... sql-mode: update compatibility (#4027) + SQL - [与 MySQL 兼容性对比](/mysql-compatibility.md) + SQL 语言结构 diff --git a/mysql-compatibility.md b/mysql-compatibility.md index b63c4f7f827a..0f7dfadc0b7d 100644 --- a/mysql-compatibility.md +++ b/mysql-compatibility.md @@ -151,11 +151,21 @@ TiDB 支持常用的 MySQL 内建函数,但是不是所有的函数都已经 出于兼容性原因,TiDB 支持使用备用存储引擎创建表的语法。元数据命令将表描述为 InnoDB 存储引擎: +<<<<<<< HEAD {{< copyable "sql" >}} ```sql CREATE TABLE t1 (a INT) ENGINE=MyISAM; ``` +======= +TiDB 支持大部分 [SQL 模式](/sql-mode.md)。不支持的 SQL 模式如下: + +- 不支持兼容模式,例如:`ORACLE` 和 `POSTGRESQL`(TiDB 解析但会忽略这两个兼容模式),MySQL 5.7 已弃用兼容模式,MySQL 8.0 已移除兼容模式。 + +- TiDB 的 `ONLY_FULL_GROUP_BY` 模式与 MySQL 5.7 相比有细微的[语义差别](/functions-and-operators/aggregate-group-by-functions.md#与-mysql-的区别)。 + +- MySQL 中的 `NO_DIR_IN_CREATE` 和 `NO_ENGINE_SUBSTITUTION` 的 SQL 模式可用于解决兼容性问题,并不适用于 TiDB。 +>>>>>>> 2505f1a... sql-mode: update compatibility (#4027) ``` Query OK, 0 rows affected (0.14 sec) diff --git a/sql-mode.md b/sql-mode.md index f4ee833ef3ae..af32dcc5643f 100644 --- a/sql-mode.md +++ b/sql-mode.md @@ -26,8 +26,8 @@ Modes 是用逗号 (',') 间隔开的一系列不同的模式。使用 `SELECT @ | PIPES_AS_CONCAT | 将 "\|\|" 视为字符串连接操作符(+)(同CONCAT()),而不视为OR(支持) | | ANSI_QUOTES | 将 `"` 视为识别符,如果启用 ANSI_QUOTES,只单引号内的会被认为是 String Literals,双引号被解释为识别符,因此不能用双引号来引用字符串(支持)| | IGNORE_SPACE | 若开启该模式,系统忽略空格。例如:“user” 和 “user “ 是相同的(支持)| -| ONLY_FULL_GROUP_BY | 如果 GROUP BY 出现的列并没有在 SELECT,HAVING,ORDER BY 中出现,此 SQL 不合法,因为不在 GROUP BY 中的列被查询展示出来不符合正常现象 (支持) | -| NO_UNSIGNED_SUBTRACTION | 在减运算中,如果某个操作数没有符号,不要将结果标记为UNSIGNED (支持)| +| ONLY_FULL_GROUP_BY | 如果 GROUP BY 出现的列并没有在 SELECT,HAVING,ORDER BY 中出现,此 SQL 不合法,因为不在 GROUP BY 中的列被查询展示出来不符合正常现象(支持) | +| NO_UNSIGNED_SUBTRACTION | 在减运算中,如果某个操作数没有符号,不要将结果标记为UNSIGNED(支持)| | NO_DIR_IN_CREATE | 创建表时,忽视所有 INDEX DIRECTORY 和 DATA DIRECTORY 指令,该选项仅对从复制服务器有用 (仅语法支持)| | NO_KEY_OPTIONS | 使用 SHOW CREATE TABLE 时不会输出 MySQL 特有的语法部分,如 ENGINE ,使用 mysqldump 跨DB种类迁移的时需要考虑此选项(仅语法支持)| | NO_FIELD_OPTIONS | 使用 SHOW CREATE TABLE 时不会输出 MySQL 特有的语法部分,如 ENGINE ,使用 mysqldump 跨DB种类迁移的时需要考虑此选项(仅语法支持)| @@ -36,21 +36,21 @@ Modes 是用逗号 (',') 间隔开的一系列不同的模式。使用 `SELECT @ | NO_BACKSLASH_ESCAPES | 若启用该模式,`\` 反斜杠符号仅代表它自己(支持)| | STRICT_TRANS_TABLES | 对于事务存储引擎启用严格模式,insert非法值之后,回滚整条语句(支持)| | STRICT_ALL_TABLES | 对于事务型表,写入非法值之后,回滚整个事务语句(支持)| -| NO_ZERO_IN_DATE | 在严格模式,不接受月或日部分为0的日期。如果使用IGNORE选项,我们为类似的日期插入'0000-00-00'。在非严格模式,可以接受该日期,但会生成警告 (支持) -| NO_ZERO_DATE | 在严格模式,不要将 '0000-00-00'做为合法日期。你仍然可以用IGNORE选项插入零日期。在非严格模式,可以接受该日期,但会生成警告 (支持)| -| ALLOW_INVALID_DATES | 不检查全部日期的合法性,仅检查月份值在 1 到 12 及 日期值在 1 到31 之间,仅适用于 DATE 和 DATATIME 列,TIMESTAMP 列需要全部检查其合法性 (支持)| -| ERROR_FOR_DIVISION_BY_ZERO | 若启用该模式,在 INSERT 或 UPDATE 过程中,被除数为 0 值时,系统产生错误
若未启用该模式,被除数为 0 值时,系统产生警告,并用 NULL 代替 (支持) | -| NO_AUTO_CREATE_USER | 防止GRANT自动创建新用户,但指定密码除外 (支持)| +| NO_ZERO_IN_DATE | 在严格模式,不接受月或日部分为0的日期。如果使用IGNORE选项,我们为类似的日期插入'0000-00-00'。在非严格模式,可以接受该日期,但会生成警告(支持) +| NO_ZERO_DATE | 在严格模式,不要将 '0000-00-00'做为合法日期。你仍然可以用IGNORE选项插入零日期。在非严格模式,可以接受该日期,但会生成警告(支持)| +| ALLOW_INVALID_DATES | 不检查全部日期的合法性,仅检查月份值在 1 到 12 及 日期值在 1 到31 之间,仅适用于 DATE 和 DATATIME 列,TIMESTAMP 列需要全部检查其合法性(支持)| +| ERROR_FOR_DIVISION_BY_ZERO | 若启用该模式,在 INSERT 或 UPDATE 过程中,被除数为 0 值时,系统产生错误
若未启用该模式,被除数为 0 值时,系统产生警告,并用 NULL 代替(支持) | +| NO_AUTO_CREATE_USER | 防止GRANT自动创建新用户,但指定密码除外(支持)| | HIGH_NOT_PRECEDENCE | NOT 操作符的优先级是表达式。例如: NOT a BETWEEN b AND c 被解释为 NOT (a BETWEEN b AND c)。在部份旧版本MySQL中, 表达式被解释为(NOT a) BETWEEN b AND c (支持) | -| NO_ENGINE_SUBSTITUTION | 如果需要的存储引擎被禁用或未编译,可以防止自动替换存储引擎 (仅语法支持)| +| NO_ENGINE_SUBSTITUTION | 如果需要的存储引擎被禁用或未编译,可以防止自动替换存储引擎(仅语法支持)| | PAD_CHAR_TO_FULL_LENGTH | 若启用该模式,系统对于 CHAR 类型不会截断尾部空格(支持)| -| REAL_AS_FLOAT | 将REAL视为FLOAT的同义词,而不是DOUBLE的同义词 (支持)| -| POSTGRESQL | 等同于 PIPES_AS_CONCAT、ANSI_QUOTES、IGNORE_SPACE、NO_KEY_OPTIONS、NO_TABLE_OPTIONS、NO_FIELD_OPTIONS (支持)| -| MSSQL | 等同于 PIPES_AS_CONCAT、ANSI_QUOTES、IGNORE_SPACE、NO_KEY_OPTIONS、NO_TABLE_OPTIONS、 NO_FIELD_OPTIONS (支持)| -| DB2 | 等同于 PIPES_AS_CONCAT、ANSI_QUOTES、IGNORE_SPACE、NO_KEY_OPTIONS、NO_TABLE_OPTIONS、NO_FIELD_OPTIONS (支持)| -| MAXDB | 等同于 PIPES_AS_CONCAT、ANSI_QUOTES、IGNORE_SPACE、NO_KEY_OPTIONS、NO_TABLE_OPTIONS、NO_FIELD_OPTIONS、NO_AUTO_CREATE_USER (支持)| -| MySQL323 | 等同于 NO_FIELD_OPTIONS、HIGH_NOT_PRECEDENCE (支持)| -| MYSQL40 | 等同于 NO_FIELD_OPTIONS、HIGH_NOT_PRECEDENCE (支持)| -| ANSI | 等同于 REAL_AS_FLOAT、PIPES_AS_CONCAT、ANSI_QUOTES、IGNORE_SPACE (支持)| -| TRADITIONAL | 等同于 STRICT_TRANS_TABLES、STRICT_ALL_TABLES、NO_ZERO_IN_DATE、NO_ZERO_DATE、ERROR_FOR_DIVISION_BY_ZERO、NO_AUTO_CREATE_USER(支持) | -| ORACLE | 等同于 PIPES_AS_CONCAT、ANSI_QUOTES、IGNORE_SPACE、NO_KEY_OPTIONS、NO_TABLE_OPTIONS、NO_FIELD_OPTIONS、NO_AUTO_CREATE_USER (支持)| +| REAL_AS_FLOAT | 将REAL视为FLOAT的同义词,而不是DOUBLE的同义词(支持)| +| POSTGRESQL | 等同于 PIPES_AS_CONCAT、ANSI_QUOTES、IGNORE_SPACE、NO_KEY_OPTIONS、NO_TABLE_OPTIONS、NO_FIELD_OPTIONS(仅语法支持)| +| MSSQL | 等同于 PIPES_AS_CONCAT、ANSI_QUOTES、IGNORE_SPACE、NO_KEY_OPTIONS、NO_TABLE_OPTIONS、 NO_FIELD_OPTIONS(仅语法支持)| +| DB2 | 等同于 PIPES_AS_CONCAT、ANSI_QUOTES、IGNORE_SPACE、NO_KEY_OPTIONS、NO_TABLE_OPTIONS、NO_FIELD_OPTIONS(仅语法支持)| +| MAXDB | 等同于 PIPES_AS_CONCAT、ANSI_QUOTES、IGNORE_SPACE、NO_KEY_OPTIONS、NO_TABLE_OPTIONS、NO_FIELD_OPTIONS、NO_AUTO_CREATE_USER(支持)| +| MySQL323 | 等同于 NO_FIELD_OPTIONS、HIGH_NOT_PRECEDENCE(仅语法支持)| +| MYSQL40 | 等同于 NO_FIELD_OPTIONS、HIGH_NOT_PRECEDENCE(仅语法支持)| +| ANSI | 等同于 REAL_AS_FLOAT、PIPES_AS_CONCAT、ANSI_QUOTES、IGNORE_SPACE(仅语法支持)| +| TRADITIONAL | 等同于 STRICT_TRANS_TABLES、STRICT_ALL_TABLES、NO_ZERO_IN_DATE、NO_ZERO_DATE、ERROR_FOR_DIVISION_BY_ZERO、NO_AUTO_CREATE_USER(仅语法支持)| +| ORACLE | 等同于 PIPES_AS_CONCAT、ANSI_QUOTES、IGNORE_SPACE、NO_KEY_OPTIONS、NO_TABLE_OPTIONS、NO_FIELD_OPTIONS、NO_AUTO_CREATE_USER(仅语法支持)| From e2d9700a8465d7900d46d221bb8d48a64926343c Mon Sep 17 00:00:00 2001 From: TomShawn <41534398+TomShawn@users.noreply.github.com> Date: Tue, 28 Jul 2020 19:32:43 +0800 Subject: [PATCH 2/2] resolve conflicts and add back changes --- TOC.md | 222 ----------------------------------------- mysql-compatibility.md | 25 ++--- 2 files changed, 10 insertions(+), 237 deletions(-) diff --git a/TOC.md b/TOC.md index 34d64a1d17bf..62bf1a52e7d9 100644 --- a/TOC.md +++ b/TOC.md @@ -6,7 +6,6 @@ ## 目录 + 关于 TiDB -<<<<<<< HEAD - [TiDB 简介](/overview.md) + Benchmark 测试 - [如何用 Sysbench 测试 TiDB](/benchmark/benchmark-tidb-using-sysbench.md) @@ -77,227 +76,6 @@ - [集群配置诊断](/troubleshoot-tidb-cluster.md) - [TiDB Lightning 故障诊断](/troubleshoot-tidb-lightning.md) + 参考手册 -======= - + [TiDB 简介](/overview.md) - + [What's New in TiDB 4.0](/whats-new-in-tidb-4.0.md) - + [基本功能](/basic-features.md) - + [与 MySQL 的兼容性](/mysql-compatibility.md) - + [使用限制](/tidb-limitations.md) - + [荣誉列表](/credits.md) -+ 快速上手 - + [快速上手指南](/quick-start-with-tidb.md) - + [SQL 基本操作](/basic-sql-operations.md) -+ 部署集群 - + [软硬件环境需求](/hardware-and-software-requirements.md) - + [环境与系统配置检查](/check-before-deployment.md) - + 配置拓扑结构 - + [最小部署拓扑结构](/minimal-deployment-topology.md) - + [TiFlash 部署拓扑](/tiflash-deployment-topology.md) - + [TiCDC 部署拓扑](/ticdc-deployment-topology.md) - + [TiDB Binlog 部署拓扑](/tidb-binlog-deployment-topology.md) - + [跨机房部署拓扑结构](/geo-distributed-deployment-topology.md) - + [混合部署拓扑结构](/hybrid-deployment-topology.md) - + 安装与启动 - + Linux 环境 - + [使用 TiUP 部署(推荐)](/production-deployment-using-tiup.md) - + [使用 TiUP 离线部署(推荐)](/production-offline-deployment-using-tiup.md) - + [使用 Ansible 部署](/online-deployment-using-ansible.md) - + [使用 Ansible 离线部署](/offline-deployment-using-ansible.md) - + [验证集群状态](/post-installation-check.md) - + 性能测试报告及重现指南 - + [如何用 Sysbench 测试 TiDB](/benchmark/benchmark-tidb-using-sysbench.md) - + [如何对 TiDB 进行 TPC-C 测试](/benchmark/benchmark-tidb-using-tpcc.md) - + [Sysbench 性能对比 - v4.0 对比 v3.0](/benchmark/benchmark-sysbench-v4-vs-v3.md) - + [TPC-H 性能对比 - v4.0 对比 v3.0](/benchmark/v4.0-performance-benchmarking-with-tpch.md) - + [TPC-C 性能对比 - v4.0 对比 v3.0](/benchmark/v4.0-performance-benchmarking-with-tpcc.md) - + [Sysbench 性能对比 - v3.0 对比 v2.1](/benchmark/v3.0-performance-benchmarking-with-sysbench.md) - + [TPC-C 性能对比 - v3.0 对比 v2.1](/benchmark/v3.0-performance-benchmarking-with-tpcc.md) - + [线上负载与 ADD INDEX 相互影响测试](/benchmark/online-workloads-and-add-index-operations.md) -+ 数据迁移 - + [概述](/migration-overview.md) - + 从 MySQL 迁移至 TiDB - + [从 Mydumper 文件迁移](/migrate-from-mysql-mydumper-files.md) - + [使用 DM 工具从 Amazon Aurora MySQL 迁移](/migrate-from-aurora-mysql-database.md) - + 从 CSV 文件迁移至 TiDB - + [使用 TiDB Lightning 导入 CSV 文件](/tidb-lightning/migrate-from-csv-using-tidb-lightning.md) - + [使用 LOAD DATA 语句导入 CSV 文件](/sql-statements/sql-statement-load-data.md) - + [从 SQL 文件迁移到 TiDB](/migrate-from-mysql-mydumper-files.md) -+ 运维操作 - + 升级 TiDB 版本 - + [使用 TiUP 升级(推荐)](/upgrade-tidb-using-tiup.md) - + [使用 TiUP 离线升级(推荐)](/upgrade-tidb-using-tiup-offline.md) - + [使用 TiDB Operator](https://docs.pingcap.com/zh/tidb-in-kubernetes/v1.1/upgrade-a-tidb-cluster) - + [使用 TiDB Ansible](/upgrade-tidb-using-ansible.md) - + 扩缩容 - + [使用 TiUP(推荐)](/scale-tidb-using-tiup.md) - + [使用 TiDB Ansible](/scale-tidb-using-ansible.md) - + [使用 TiDB Operator](https://docs.pingcap.com/zh/tidb-in-kubernetes/v1.1/scale-a-tidb-cluster) - + 备份与恢复 - + 使用 BR 工具(推荐) - + [使用 BR 进行备份与恢复](/br/backup-and-restore-tool.md) - + [BR 备份与恢复场景示例](/br/backup-and-restore-use-cases.md) - + [BR 存储](/br/backup-and-restore-storages.md) - + [使用 Dumpling 和 TiDB Lightning 进行备份与恢复(推荐)](/backup-and-restore-using-dumpling-lightning.md) - + [使用 Mydumper 和 TiDB Lightning 进行备份与恢复](/backup-and-restore-using-mydumper-lightning.md) - + [读取历史数据](/read-historical-data.md) - + [修改时区](/configure-time-zone.md) - + [日常巡检](/daily-check.md) - + [TiCDC 运维操作及任务管理](/ticdc/manage-ticdc.md) - + [TiFlash 常用运维操作](/tiflash/maintain-tiflash.md) - + [TiUP 常用运维操作](/maintain-tidb-using-tiup.md) - + [Ansible 常用运维操作](/maintain-tidb-using-ansible.md) -+ 监控与告警 - + [监控框架概述](/tidb-monitoring-framework.md) - + [监控 API](/tidb-monitoring-api.md) - + [手动部署监控](/deploy-monitoring-services.md) - + [TiDB 集群报警规则与处理方法](/alert-rules.md) - + [TiFlash 报警规则与处理方法](/tiflash/tiflash-alert-rules.md) -+ 故障诊断 - + [定位慢查询](/identify-slow-queries.md) - + [SQL 诊断](/system-tables/system-table-sql-diagnostics.md) - + [定位消耗系统资源多的查询](/identify-expensive-queries.md) - + [SQL 语句统计](/statement-summary-tables.md) - + [TiDB 集群常见问题](/troubleshoot-tidb-cluster.md) - + [TiDB 集群问题导图](/tidb-troubleshooting-map.md) - + [热点问题处理](/troubleshoot-hot-spot-issues.md) - + [CPU 占用过多导致读写延迟增加](/troubleshoot-cpu-issues.md) - + [写冲突与写性能下降](/troubleshoot-write-conflicts.md) - + [磁盘 I/O 过高](/troubleshoot-high-disk-io.md) - + [锁冲突与 TTL 超时](/troubleshoot-lock-conflicts.md) - + [TiCDC 常见问题](/ticdc/troubleshoot-ticdc.md) - + [TiFlash 常见问题](/tiflash/troubleshoot-tiflash.md) -+ 性能调优 - + 系统调优 - + [操作系统性能参数调优](/tune-operating-system.md) - + 软件调优 - + 配置 - + [TiDB 内存调优](/configure-memory-usage.md) - + [TiKV 线程调优](/tune-tikv-thread-performance.md) - + [TiKV 内存调优](/tune-tikv-memory-performance.md) - + [TiKV Follower Read](/follower-read.md) - + [TiFlash 调优](/tiflash/tune-tiflash-performance.md) - + [下推计算结果缓存](/coprocessor-cache.md) - + SQL 性能调优 - + [SQL 性能调优概览](/sql-tuning-overview.md) - + [理解 TiDB 执行计划](/query-execution-plan.md) - + SQL 优化 - + [SQL 优化流程简介](/sql-optimization-concepts.md) - + 逻辑优化 - + [逻辑优化概览](/sql-logical-optimization.md) - + [子查询相关的优化](/subquery-optimization.md) - + [列裁剪](/column-pruning.md) - + [关联子查询去关联](/correlated-subquery-optimization.md) - + [Max/Min 消除](/max-min-eliminate.md) - + [谓词下推](/predicate-push-down.md) - + [分区裁剪](/partition-pruning.md) - + [TopN 和 Limit 下推](/topn-limit-push-down.md) - + [Join Reorder](/join-reorder.md) - + 物理优化 - + [物理优化概览](/sql-physical-optimization.md) - + [索引的选择](/choose-index.md) - + [统计信息简介](/statistics.md) - + [错误索引的解决方案](/wrong-index-solution.md) - + [Distinct 优化](/agg-distinct-optimization.md) - + [执行计划缓存](/sql-prepare-plan-cache.md) - + 控制执行计划 - + [控制执行计划概览](/control-execution-plan.md) - + [Optimizer Hints](/optimizer-hints.md) - + [执行计划管理](/sql-plan-management.md) - + [优化规则及表达式下推的黑名单](/blacklist-control-plan.md) -+ 教程 - + [同城多中心部署](/multi-data-centers-in-one-city-deployment.md) - + [两地三中心部署](/three-data-centers-in-two-cities-deployment.md) - + 最佳实践 - + [TiDB 最佳实践](/best-practices/tidb-best-practices.md) - + [Java 应用开发最佳实践](/best-practices/java-app-best-practices.md) - + [HAProxy 最佳实践](/best-practices/haproxy-best-practices.md) - + [高并发写入场景最佳实践](/best-practices/high-concurrency-best-practices.md) - + [Grafana 监控最佳实践](/best-practices/grafana-monitor-best-practices.md) - + [PD 调度策略最佳实践](/best-practices/pd-scheduling-best-practices.md) - + [海量 Region 集群调优](/best-practices/massive-regions-best-practices.md) - + [Placement Rules 使用文档](/configure-placement-rules.md) - + [Load Base Split 使用文档](/configure-load-base-split.md) - + [Store Limit 使用文档](/configure-store-limit.md) -+ TiDB 生态工具 - + [功能概览](/ecosystem-tool-user-guide.md) - + [适用场景](/ecosystem-tool-user-case.md) - + [工具下载](/download-ecosystem-tools.md) - + Backup & Restore (BR) - + [BR 常见问题](/br/backup-and-restore-faq.md) - + [使用 BR 进行备份和恢复](/br/backup-and-restore-tool.md) - + [BR 备份与恢复场景示例](/br/backup-and-restore-use-cases.md) - + TiDB Binlog - + [概述](/tidb-binlog/tidb-binlog-overview.md) - + [快速上手](/tidb-binlog/get-started-with-tidb-binlog.md) - + [部署使用](/tidb-binlog/deploy-tidb-binlog.md) - + [运维管理](/tidb-binlog/maintain-tidb-binlog-cluster.md) - + [配置说明](/tidb-binlog/tidb-binlog-configuration-file.md) - + [Pump](/tidb-binlog/tidb-binlog-configuration-file.md#pump) - + [Drainer](/tidb-binlog/tidb-binlog-configuration-file.md#drainer) - + [版本升级](/tidb-binlog/upgrade-tidb-binlog.md) - + [监控告警](/tidb-binlog/monitor-tidb-binlog-cluster.md) - + [增量恢复](/tidb-binlog/tidb-binlog-reparo.md) - + [binlogctl 工具](/tidb-binlog/binlog-control.md) - + [Kafka 自定义开发](/tidb-binlog/binlog-slave-client.md) - + [TiDB Binlog Relay Log](/tidb-binlog/tidb-binlog-relay-log.md) - + [集群间双向同步](/tidb-binlog/bidirectional-replication-between-tidb-clusters.md) - + [术语表](/tidb-binlog/tidb-binlog-glossary.md) - + 故障诊断 - + [故障诊断](/tidb-binlog/troubleshoot-tidb-binlog.md) - + [常见错误修复](/tidb-binlog/handle-tidb-binlog-errors.md) - + [FAQ](/tidb-binlog/tidb-binlog-faq.md) - + TiDB Lightning - + [概述](/tidb-lightning/tidb-lightning-overview.md) - + [快速上手教程](/get-started-with-tidb-lightning.md) - + [部署执行](/tidb-lightning/deploy-tidb-lightning.md) - + [参数说明](/tidb-lightning/tidb-lightning-configuration.md) - + 主要功能 - + [断点续传](/tidb-lightning/tidb-lightning-checkpoints.md) - + [表库过滤](/table-filter.md) - + [CSV 支持](/tidb-lightning/migrate-from-csv-using-tidb-lightning.md) - + [TiDB-backend](/tidb-lightning/tidb-lightning-tidb-backend.md) - + [Web 界面](/tidb-lightning/tidb-lightning-web-interface.md) - + [监控告警](/tidb-lightning/monitor-tidb-lightning.md) - + [故障诊断](/troubleshoot-tidb-lightning.md) - + [FAQ](/tidb-lightning/tidb-lightning-faq.md) - + [术语表](/tidb-lightning/tidb-lightning-glossary.md) - + [TiCDC](/ticdc/ticdc-overview.md) - + [Dumpling](/dumpling-overview.md) - + sync-diff-inspector - + [概述](/sync-diff-inspector/sync-diff-inspector-overview.md) - + [不同库名或表名的数据校验](/sync-diff-inspector/route-diff.md) - + [分库分表场景下的数据校验](/sync-diff-inspector/shard-diff.md) - + [TiDB 主从集群的数据校验](/sync-diff-inspector/upstream-downstream-diff.md) - + [Loader](/loader-overview.md) - + [Mydumper](/mydumper-overview.md) - + [Syncer](/syncer-overview.md) - + TiSpark - + [TiSpark 快速上手](/get-started-with-tispark.md) - + [TiSpark 用户指南](/tispark-overview.md) -+ 参考指南 - + 架构 - + [概述](/tidb-architecture.md) - + [存储](/tidb-storage.md) - + [计算](/tidb-computing.md) - + [调度](/tidb-scheduling.md) - + 监控指标 - + [Overview 面板](/grafana-overview-dashboard.md) - + [TiDB 面板](/grafana-tidb-dashboard.md) - + [PD 面板](/grafana-pd-dashboard.md) - + [TiKV 面板](/grafana-tikv-dashboard.md) - + [TiFlash 监控指标](/tiflash/monitor-tiflash.md) - + 安全加固 - + [为 TiDB 客户端服务端间通信开启加密传输](/enable-tls-between-clients-and-servers.md) - + [为 TiDB 组件间通信开启加密传输](/enable-tls-between-components.md) - + [生成自签名证书](/generate-self-signed-certificates.md) - + [静态加密](/encryption-at-rest.md) - + 权限 - + [与 MySQL 安全特性差异](/security-compatibility-with-mysql.md) - + [权限管理](/privilege-management.md) - + [TiDB 用户账户管理](/user-account-management.md) - + [基于角色的访问控制](/role-based-access-control.md) - + [TiDB 证书鉴权使用指南](/certificate-authentication.md) ->>>>>>> 2505f1a... sql-mode: update compatibility (#4027) + SQL - [与 MySQL 兼容性对比](/mysql-compatibility.md) + SQL 语言结构 diff --git a/mysql-compatibility.md b/mysql-compatibility.md index 0f7dfadc0b7d..22450c2a6c16 100644 --- a/mysql-compatibility.md +++ b/mysql-compatibility.md @@ -9,7 +9,11 @@ TiDB 支持 MySQL 传输协议及其绝大多数的语法。这意味着您现 当前 TiDB 服务器官方支持的版本为 MySQL 5.7。大部分 MySQL 运维工具(如 PHPMyAdmin, Navicat, MySQL Workbench 等),以及备份恢复工具(如 mysqldump, Mydumper/myloader)等都可以直接使用。 -不过一些特性由于在分布式环境下没法很好的实现,目前暂时不支持或者是表现与 MySQL 有差异。一些 MySQL 语法在 TiDB 中可以解析通过,但是不会做任何后续的处理,例如 `Create Table` 语句中 `Engine`,是解析并忽略。 +但 TiDB 尚未支持一些 MySQL 功能,可能的原因如下: + +- 有更好的解决方案,例如 JSON 取代 XML 函数。 +- 目前对这些功能的需求度不高,例如存储流程和函数。 +- 一些功能在分布式系统上的实现难度较大。 > **注意:** > @@ -151,21 +155,11 @@ TiDB 支持常用的 MySQL 内建函数,但是不是所有的函数都已经 出于兼容性原因,TiDB 支持使用备用存储引擎创建表的语法。元数据命令将表描述为 InnoDB 存储引擎: -<<<<<<< HEAD {{< copyable "sql" >}} ```sql CREATE TABLE t1 (a INT) ENGINE=MyISAM; ``` -======= -TiDB 支持大部分 [SQL 模式](/sql-mode.md)。不支持的 SQL 模式如下: - -- 不支持兼容模式,例如:`ORACLE` 和 `POSTGRESQL`(TiDB 解析但会忽略这两个兼容模式),MySQL 5.7 已弃用兼容模式,MySQL 8.0 已移除兼容模式。 - -- TiDB 的 `ONLY_FULL_GROUP_BY` 模式与 MySQL 5.7 相比有细微的[语义差别](/functions-and-operators/aggregate-group-by-functions.md#与-mysql-的区别)。 - -- MySQL 中的 `NO_DIR_IN_CREATE` 和 `NO_ENGINE_SUBSTITUTION` 的 SQL 模式可用于解决兼容性问题,并不适用于 TiDB。 ->>>>>>> 2505f1a... sql-mode: update compatibility (#4027) ``` Query OK, 0 rows affected (0.14 sec) @@ -190,11 +184,12 @@ Create Table: CREATE TABLE `t1` ( ### SQL 模式 -TiDB 支持 MySQL 5.7 中 **绝大多数的 SQL 模式**,以下几种模式除外: +TiDB 支持大部分 [SQL 模式](/sql-mode.md)。不支持的 SQL 模式如下: + +- 不支持兼容模式,例如:`ORACLE` 和 `POSTGRESQL`(TiDB 解析但会忽略这两个兼容模式),MySQL 5.7 已弃用兼容模式,MySQL 8.0 已移除兼容模式。 +- TiDB 的 `ONLY_FULL_GROUP_BY` 模式与 MySQL 5.7 相比有细微的[语义差别](/functions-and-operators/aggregate-group-by-functions.md#与-mysql-的区别)。 -- TiDB 不支持兼容模式(例如 `ORACLE` 和 `POSTGRESQL`)。MySQL 5.7 已弃用兼容模式,MySQL 8.0 已移除兼容模式。 -- TiDB 中的 `ONLY_FULL_GROUP_BY` 与 MySQL 5.7 相比有细微的[语义差别](/functions-and-operators/aggregate-group-by-functions.md#与-mysql-的区别),此问题日后将予以解决。 -- `NO_DIR_IN_CREATE` 和 `NO_ENGINE_SUBSTITUTION` 这两种 SQL 模式用于解决兼容问题,但并不适用于 TiDB。 +MySQL 中的 `NO_DIR_IN_CREATE` 和 `NO_ENGINE_SUBSTITUTION` 的 SQL 模式可用于解决兼容性问题,并不适用于 TiDB。 ### 默认设置的区别