【问题标题】:Translate MS SQL Server performance queries to MySQL将 MS SQL Server 性能查询转换为 MySQL
【发布时间】:2019-12-07 04:26:30
【问题描述】:

我正在尝试计算一些 SQL 查询的性能指标。我找到了 MS SQL Server 的基准查询,我想要 MySQL Workbench(Windows 环境)的相同查询。我使用的查询如下:

--Elapsed time and CPU time
SET STATISTICS TIME ON;
   Query to measure
SET STATISTICS TIME OFF;

-- RAM
select
(physical_memory_in_use_kb)Phy_Memory_usedby_Sqlserver_KB,
(virtual_address_space_committed_kb/1024 )Total_Memory_UsedBySQLServer_MB
from sys. dm_os_process_memory

--HD
sp_msforeachtable N'EXEC sp_spaceused [?]';  

你能帮我把上面的查询转换成 MySQL 吗? 我不想使用 MySQL Workbench 的 Performance Schema 提供的报告,因为我想将结果与 MS SQL Server 的上述查询进行比较。

提前谢谢你

【问题讨论】:

  • 澄清一下,这些查询使用的 SQL Server 系统表在任何类型的 ANSI 标准中都没有定义,因此没有一种干净的方法可以将它们转换为另一个完美的 RDBMS可比。我只是在谷歌上搜索如何测量 MySQL 上的查询时间、RAM 和磁盘空间,而不是太担心找到一个完美的 SQL Server 模拟。

标签: mysql database-migration query-performance


【解决方案1】:

正如 Jeff 所指出的,您无法在 MySQL 中完全获得这些功能。你也不能靠近。但是,这里有一些有用的东西:

  • 打开慢日志并将long_quer_time 设置为 0。然后在慢日志中查找有关查询的各种信息。
  • 使用performance_schema(需要“开启”)
  • 为了简单的计时,要么在客户端做,要么做

    SELECT SYSDATE(6), ..., SYSDATE(6) FROM ...;
    
  • 特定查询的内存不可用。 (然而,MariaDB 也有类似的东西。)通常一个查询占用一个相对固定的、少量的内存。它使用的大部分内容都是共享的——各种缓存。

  • EXPLAIN SELECT ...
  • EXPLAIN FORMAT=JSON SELECT ...
  • 优化器跟踪。这需要“开启”,并且您需要获取结果。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-01-10
    • 1970-01-01
    • 1970-01-01
    • 2012-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多