MySQL 的隐藏功能

MySQL 的隐藏功能

按照隐藏功能的悠久传统,让我们列出 MySQL 中的隐藏功能。

请每个答案添加一个特征。

另请参阅:
Linux 的隐藏功能
PowerShell 的隐藏功能
Oracle 数据库的隐藏功能
Windows 2008 的隐藏功能
Solaris/OpenSolaris 的隐藏功能
SQL Server 的隐藏功能
IIS 的隐藏功能(6.0 / 7.0)

答案1

一个经常不使用但更冗长的

显示完整流程列表

很方便,但不如 awesome非企业查询分析器- 像这样启用

    mysql> 设置分析=1;
    查询成功,影响 0 行(0.00 秒)

这两个是用于填充配置文件表的垃圾查询,

        
    mysql>从_test.customers中选择*;
    错误 1146 (42S02):表 '_test.customers' 不存在

    mysql> 从 test.customers 中选择 * 限制 0;
    空集(0.00 秒)
    

获取所有查询的列表及其持续时间

        
    mysql>显示配置文件;
    +----------+------------+-------------------------------+
    | Query_ID | 持续时间 | 查询 |
    +----------+------------+-------------------------------+
    | 1 | 0.00013400 | 从 _test.customers 中选择 * |
    | 2 | 0.01546500 | 从测试.客户中选择*|
    +----------+------------+-------------------------------+

上次查询的显示信息只是“显示个人资料” - 或者您可以指定查询

  
    mysql>显示查询 2 的配置文件;
    +----------------------+----------+
    | 状态 | 持续时间 |
    +----------------------+----------+
    | 开始 | 0.000053 |
    | 检查权限 | 0.000007 |
    | 打开表 | 0.000014 |
    | 系统锁定 | 0.000006 |
    | 表锁 | 0.000008 |
    | 初始化 | 0.000065 |
    | 优化 | 0.000003 |
    | 正在执行 | 0.000201 |
    | 结束 | 0.000003 |
    | 查询结束 | 0.000002 |
    | 释放物品 | 0.000020 |
    | 记录慢速查询 | 0.000002 |
    | 清理 | 0.000004 |
    +----------------------+----------+
    共 13 行 (0.00 秒)

您还可以请求特定信息,例如 CPU、BLOCK IO 和 SWAPS 等(全部在手册页上

  
    mysql> 显示查询 2 的 CPU 配置文件;
    +----------------------+----------+----------+------------+
    | 状态 | 持续时间 | CPU_用户 | CPU_系统 |
    +----------------------+----------+----------+------------+
    | 开始 | 0.000056 | 0.001000 | 0.000000 |
    | 检查权限 | 0.000007 | 0.000000 | 0.000000 |
    | 打开表格 | 0.000010 | 0.000000 | 0.000000 |
    | 系统锁 | 0.000005 | 0.000000 | 0.000000 |
    | 表锁 | 0.000007 | 0.000000 | 0.000000 |
    | 初始化 | 0.000059 | 0.000000 | 0.000000 |
    | 优化 | 0.000003 | 0.000000 | 0.000000 |
    | 统计 | 0.015022 | 0.000000 | 0.000000 |
    | 准备 | 0.000014 | 0.001000 | 0.000000 |
    | 正在执行 | 0.000004 | 0.000000 | 0.000000 |
    | 发送数据 | 0.000245 | 0.000000 | 0.000000 |
    | 结束 | 0.000004 | 0.000000 | 0.000000 |
    | 查询结束 | 0.000002 | 0.000000 | 0.000000 |
    | 释放物品 | 0.000021 | 0.000000 | 0.000000 |
    | 记录慢速查询 | 0.000002 | 0.000000 | 0.000000 |
    | 清理 | 0.000004 | 0.000000 | 0.000000 |
    +----------------------+----------+----------+------------+
    共 16 行 (0.00 秒)

不要忘记随后禁用它,因为日志记录会增加开销。

  
    mysql> 设置分析=0;
    查询成功,影响 0 行(0.00 秒)

答案2

一些MySQL 命令并不总是被人们熟知或记住的。

将结果集方向更改为垂直以便于阅读和粘贴。

mysql> SELECT CURDATE(), CURTIME()\G
*************************** 1. row ***************************
CURDATE(): 2009-06-26
CURTIME(): 12:10:37

取消当前正在输入的查询,但将其保留在历史记录中。

mysql> SELECT CURDATE(), CURTIME()\c
mysql>

使用您最喜欢的 $EDITOR 编辑查询或最后一个查询(分别)。

mysql> SELECT CURDATE(), CURTIME()\e
mysql> \e

清除控制台的输出。

mysql> \! clear

通过 MD5 哈希比较结果集。

mysql> pager md5sum -
PAGER set to 'md5sum -'
mysql> SELECT CURDATE(), CURTIME();
d24e22e4e2d33dfda9f01ba934b7676a  -
mysql> nopager
PAGER set to stdout

更改你的提示。

mysql> prompt (\u@\h) [\d]>\_
PROMPT set to '(\u@\h) [\d]>\_'
(dan@localhost) [test]>

在命令历史记录中搜索给定的字符串(如 Bash)。
开始输入搜索词并重复 ^R 以循环显示结果。

^R
(reverse-i-search)`DATE': SELECT CURDATE(), CURTIME();

答案3

我学到的一些技巧可能对某些人有用:

要运行先前保存的文件:

source filename      # Alternatively you can enter "\\. filename".

使用“\!”来访问 shell 命令。例如:

\\! ls c*sql   # To list all your SQL files in directory starting with "c".

因此,如果您想将语句写入文件(不使用编辑器选项),您可以输入:

\\! echo 'select * from emp where job ="salesman" '   > test2.sql   # Editor option seems easier to me though!

如果你输入

\\T filename

然后,您的语句和查询结果将被定向/打印到您指定的文件名。使用\\t关闭此功能。

使用“;”而不是“;”来终止查询,\\G以便以行格式而不是列格式显示输出。

不要排除在 SHOW 语句中使用 Where...LIKE 子句。例如:

SHOW STATUS LIKE '%cache%';

最后,要找到 MySQL 数据目录的位置而不查看文件,my.cnf请使用:

SHOW VARIABLES LIKE 'datadir';

答案4

实际上记录,但非常烦人:自动日期转换的数据不正确。

在 MySQL 5.0.2 之前,MySQL 会容忍非法或不正确的数据值,并将它们强制转换为合法值以供数据输入。在 MySQL 5.0.2 及更高版本中,这仍然是默认行为,但您可以更改服务器 SQL 模式以选择更传统的错误值处理方式,以便服务器拒绝这些错误值并中止出现这些错误的语句。

有时您会“幸运”,因为 MySQL 不会将输入调整为附近的有效日期,而是将其存储为根据0000-00-00定义无效的日期。但是,即便如此,您可能也希望 MySQL 失败,而不是默默地为您存储此值。

相关内容