AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 32102
In Process
Binoj Antony
Binoj Antony
Asked: 2009-06-27 02:55:30 +0800 CST2009-06-27 02:55:30 +0800 CST 2009-06-27 02:55:30 +0800 CST

MySQL的隐藏特性

  • 772
锁定。这个问题及其答案被锁定,因为这个问题离题但具有历史意义。它目前不接受新的答案或交互。

在具有隐藏功能的悠久传统中,让我们列出 MySQL 中的隐藏功能。

每个答案都放一个特征。

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

mysql
  • 11 11 个回答
  • 4985 Views

11 个回答

  • Voted
  1. Andy
    2009-06-27T05:33:04+08:002009-06-27T05:33:04+08:00

    一个经常不用但更冗长的

    显示完整的进程列表

    很方便,但不如令人敬畏的非企业查询分析器- 像这样启用

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

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

            
        mysql> 从 _test.customers 中选择 *;
        错误 1146 (42S02): 表 '_test.customers' 不存在
    
        mysql> select * from test.customers limit 0;
        空集(0.00 秒)
        

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

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

    最后一个查询的显示信息将只是“显示配置文件” - 或者您可以指定一个查询

      
        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 秒)
    
    • 9
  2. Dan Carley
    2009-06-27T03:28:26+08:002009-06-27T03:28:26+08:00

    一些并不总是众所周知或记住的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();
    
    • 8
  3. DBMarcos99
    2009-07-13T03:03:32+08:002009-07-13T03:03:32+08:00

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

    要运行您之前保存的文件:

    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%';
    

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

    SHOW VARIABLES LIKE 'datadir';
    
    • 4
  4. Binoj Antony
    2009-06-27T03:07:45+08:002009-06-27T03:07:45+08:00

    我个人喜欢这个SHOW命令

    你可以这样做
    SHOW PROCESSLIST- 查看所有正在运行的 mysql 连接
    SHOW CREATE TABLE TableName- 查看用于创建表
    SHOW CREATE PROCEDURE ProcedureName的 sql - 查看用于创建 SP 的 sql
    SHOW VARIABLES- 查看所有系统变量

    在此处获取完整列表

    • 3
  5. Arjan
    2009-07-13T04:15:25+08:002009-07-13T04:15:25+08:00

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

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

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

    • 3
  6. Binoj Antony
    2009-07-13T20:51:11+08:002009-07-13T20:51:11+08:00

    将 MySQL 与其他数据库区分开来的另一个特性是REPLACE INTO命令。你可以做:

    REPLACE INTO T1 (Col1, Col2 )
    SELECT Col1, Col2 FROM T2;
    

    您也可以像编写更新语句一样编写替换语句:

    REPLACE INTO T1 
    SET Col1 = 'SomeValue1'
    , Col2   = 'SomeValue2'
    
    • 3
  7. Paul Dixon
    2009-06-27T03:20:14+08:002009-06-27T03:20:14+08:00

    并不是一个真正的隐藏功能,但它鲜为人知,我经常使用它来节省执行查询以在执行 UPDATE 或 INSERT 之前检查是否存在某些内容

    INSERT ... ON DUPLICATE KEY UPDATE
    

    文档在这里

    • 2
  8. Binoj Antony
    2009-06-27T03:17:03+08:002009-06-27T03:17:03+08:00

    要查看查询执行计划,请使用 EXPLAIN

    例如

    EXPLAIN 
    SELECT T1.Col1, T2.Col2
    FROM T1 INNER JOIN T2 ON T1.Id = T2.Id
    WHERE T1.Col3 = 10
    
    • 1
  9. pQd
    2009-07-13T03:07:57+08:002009-07-13T03:07:57+08:00

    没有真正隐藏,但慢查询日志可以真正有助于在高峰时间跟踪性能问题的原因。

    在文件my.cnf中,[mysqld] 部分 - 添加:

    log_slow_queries=/var/log/mysql/mysql-slow.log
    # log queries that took more than 1 sec
    long_query_time = 1
    
    • 1
  10. Eric Petroelje
    2009-06-27T04:38:01+08:002009-06-27T04:38:01+08:00

    好吧,不能将其标记为重复,因为它是一个不同的站点(我这里没有代表),但我将链接到这个出色的 stackoverflow 帖子以解决相同的问题:

    • 0

相关问题

  • 跨地理位置不同的服务器的 MySQL 复制

  • 从 MySQL 迁移到 SQL Server 的最佳方法或工具

  • 您如何跟踪和调试 mySQL 性能问题?

  • 在 Linux Xen VPS 上优化 Apache 和 MySQL

  • 如何选择 MySQL 数据库引擎

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    从 IP 地址解析主机名

    • 8 个回答
  • Marko Smith

    如何按大小对 du -h 输出进行排序

    • 30 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    Windows 中执行反向 DNS 查找的命令行实用程序是什么?

    • 14 个回答
  • Marko Smith

    如何检查 Windows 机器上的端口是否被阻塞?

    • 4 个回答
  • Marko Smith

    我应该打开哪个端口以允许远程桌面?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    MikeN 在 Nginx 中,如何在维护子域的同时将所有 http 请求重写为 https? 2009-09-22 06:04:43 +0800 CST
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    0x89 bash中的双方括号和单方括号有什么区别? 2009-08-10 13:11:51 +0800 CST
  • Martin Hope
    kch 如何更改我的私钥密码? 2009-08-06 21:37:57 +0800 CST
  • Martin Hope
    Kyle Brandt IPv4 子网如何工作? 2009-08-05 06:05:31 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve