web-dev-qa-db-ja.com

MySQLの最適化

約20のWebサイトがアクティブな専用サーバーを実行しています。そのうちの約6つはMagentoインストールです。サーバーをWebサーバー(Web、電子メール、およびMySQL)として実行します。

これはプリエンプティブな最適化です。現時点では問題はないようですが、潜在的な問題を後で回避するために、事前に対応して最適化することは良いことだと思います。

サーバーは8コアCPU、8Gb RAMで、CentOS 6を実行しています。8GBのRAMは、データベースだけでなく、サーバー全体に分散されています。MySQLのインストールを最適化しようとしています可能な限り最高のパフォーマンスと安定性MySQLTuner(1.7.4)を実行し、これらの提案を得ました。

設定を最適化する上でいくつかの助けをいただければ幸いです。

ありがとうございました!

更新:2017年11月28日08:20 PM EST

 - Added additional 8GB of RAM.  
 - Latest MySQLTuner results. Global Status, Variables, Innodb Status files updated.

リクエストされた3つのファイルを表示できます ここ 。以下の最新情報:

-------- Storage Engine Statistics -----------------------------------------------------------------
[--] Status: +ARCHIVE +BLACKHOLE +CSV -FEDERATED +InnoDB +MEMORY +MRG_MYISAM +MyISAM +PERFORMANCE_SCHEMA
[--] Data in MyISAM tables: 90M (Tables: 300)
[--] Data in InnoDB tables: 923M (Tables: 3591)
[--] Data in MEMORY tables: 3M (Tables: 141)
[OK] Total fragmented tables: 0

-------- Security Recommendations ------------------------------------------------------------------
[OK] There are no anonymous accounts for any database users
[OK] All database users have passwords assigned
[--] There are 612 basic passwords in the list.

-------- CVE Security Recommendations --------------------------------------------------------------
[OK] NO SECURITY CVE FOUND FOR YOUR VERSION

-------- Performance Metrics -----------------------------------------------------------------------
[--] Up for: 13d 17h 16m 32s (29M q [25.279 qps], 860K conn, TX: 43G, RX: 9G)
[--] Reads / Writes: 68% / 32%
[--] Binary logging is disabled
[--] Physical Memory     : 7.7G
[--] Max MySQL memory    : 5.1G
[--] Other process memory: 964.7M
[--] Total buffers: 4.4G global + 1.1M per thread (100 max threads)
[--] P_S Max memory usage: 555M
[--] Galera GCache Max memory usage: 0B
[OK] Maximum reached memory usage: 5.0G (65.37% of installed RAM)
[OK] Maximum possible memory usage: 5.1G (66.51% of installed RAM)
[OK] Overall possible memory usage with other process is compatible with memory available
[OK] Slow queries: 0% (35/29M)
[OK] Highest usage of available connections: 21% (21/100)
[OK] Aborted connections: 0.01%  (114/860297)
[!!] name resolution is active : a reverse name resolution is made for each new connection and can reduce performance
[!!] Query cache may be disabled by default due to mutex contention.
[OK] Query cache efficiency: 90.8% (22M cached / 25M selects)
[!!] Query cache prunes per day: 43104
[OK] Sorts requiring temporary tables: 0% (38 temp sorts / 360K sorts)
[!!] Joins performed without indexes: 22932
[OK] Temporary tables created on disk: 23% (201K on disk / 844K total)
[OK] Thread cache hit rate: 99% (21 created / 860K connections)
[OK] Table cache hit rate: 47% (7K open / 16K opened)
[OK] Open file limit used: 4% (867/20K)
[OK] Table locks acquired immediately: 99% (5M immediate / 5M locks)

-------- Performance schema ------------------------------------------------------------------------
[--] Memory used by P_S: 555.4M
[--] Sys schema isn't installed.

-------- ThreadPool Metrics ------------------------------------------------------------------------
[--] ThreadPool stat is enabled.
[--] Thread Pool Size: 8 thread(s).
[!!] thread_pool_size between 16 and 36 when using InnoDB storage engine.

-------- MyISAM Metrics ----------------------------------------------------------------------------
[!!] Key buffer used: 19.5% (52M used / 268M cache)
[OK] Key buffer size / total MyISAM indexes: 256.0M/22.5M
[OK] Read Key buffer hit rate: 99.9% (3M cached / 3K reads)
[!!] Write Key buffer hit rate: 42.3% (124K cached / 52K writes)

-------- InnoDB Metrics ----------------------------------------------------------------------------
[--] InnoDB is enabled.
[--] InnoDB Thread Concurrency: 4
[OK] InnoDB File per table is activated
[OK] InnoDB buffer pool / data size: 4.0G/923.8M
[!!] Ratio InnoDB log file size / InnoDB Buffer pool size (50 %): 1.0G * 2/4.0G should be equal 25%
[!!] InnoDB buffer pool instances: 8
[--] InnoDB Buffer Pool Chunk Size not used or defined in your version
[OK] InnoDB Read buffer efficiency: 99.99% (383379684 hits/ 383413960 total)
[!!] InnoDB Write Log efficiency: 72.46% (2434433 hits/ 3359563 total)
[OK] InnoDB log waits: 0.00% (0 waits / 925130 writes)

-------- AriaDB Metrics ----------------------------------------------------------------------------
[--] AriaDB is disabled.

-------- TokuDB Metrics ----------------------------------------------------------------------------
[--] TokuDB is disabled.

-------- XtraDB Metrics ----------------------------------------------------------------------------
[--] XtraDB is disabled.

-------- RocksDB Metrics ---------------------------------------------------------------------------
[--] RocksDB is disabled.

-------- Spider Metrics ----------------------------------------------------------------------------
[--] Spider is disabled.

-------- Connect Metrics ---------------------------------------------------------------------------
[--] Connect is disabled.

-------- Galera Metrics ----------------------------------------------------------------------------
[--] Galera is disabled.

-------- Replication Metrics -----------------------------------------------------------------------
[--] Galera Synchronous replication: NO
[--] No replication slave(s) for this server.
[--] This is a standalone server.

-------- Recommendations ---------------------------------------------------------------------------
General recommendations:
    Control warning line(s) into /var/lib/mysql/ file
    Control error line(s) into /var/lib/mysql/ file
    Configure your accounts with ip or subnets only, then update your configuration with skip-name-resolve=1
    Adjust your join queries to always utilize indexes
    Consider installing Sys schema from https://github.com/mysql/mysql-sys
    Thread pool size for InnoDB usage (8)
    Read this before changing innodb_log_file_size and/or innodb_log_files_in_group:
Variables to adjust:
    query_cache_size (=0)
    query_cache_type (=0)
    query_cache_size (> 100M)
    join_buffer_size (> 256.0K, or always use indexes with joins)
    thread_pool_size between 16 and 36 for InnoDB usage
    innodb_log_file_size should be (=512M) if possible, so InnoDB total log files size equals to 25% of buffer pool size.
    innodb_buffer_pool_instances(=4)

以下は現在私の設定ファイルにある設定です。

[mysqld]                                                                                                                            

datadir=/var/lib/mysql
socket=/chroot/tmp/mysql.sock

userstat=1


ft_min_Word_len=3

max_connections=100 # MAX CURRENT X 5
max_connect_errors=25
connect_timeout=10
interactive_timeout=20
wait_timeout=50
delayed_insert_timeout=10
#join_buffer_size=1M

max_allowed_packet=16M

myisam_sort_buffer_size=1M
#sort_buffer_size=1M

#read_buffer_size=1M
#read_rnd_buffer_size=2M

thread_cache_size=100  # from 192 MySQL v 8 recommends CAP of 100 to avoid overload
thread_concurrency=4

query_cache_size=100M # from 256M
#query_cache_limit=32M #remove to allow default of 1M rather than 32M
query_cache_type=1
query_cache_min_res_unit = 512  # from 4K to conserve qcache RAM used per RESULT

tmp_table_size=80M # from 512M
max_heap_table_size=80M # from 512M
max_tmp_tables=10
slow_query_log=1
long_query_time=10
slow-query-log-file  = /var/lib/mysql/mysql-slow.log
table_open_cache = 10000  # 10000 from 2000 to support the 28,000 opened by instance

innodb-file-per-table=1

character-set-server=utf8
collation-server=utf8_general_ci

# Tweaking below
# 256M
innodb_buffer_pool_size = 4G  # to match RAM reported by MySQLTuner
# 512 MB
key_buffer_size = 256M  # from 512M used only my MyISAM
# 16MB
bulk_insert_buffer_size = 16M
innodb_thread_concurrency = 4
innodb_autoinc_lock_mode = 0
skip-external-locking
# Double write off :)
innodb_doublewrite = true
low_priority_updates = 1
#innodb_checksums = false
innodb_support_xa = false
max_write_lock_count = 10
innodb_flush_log_at_trx_commit = 2
innodb_max_dirty_pages_pct = 40
innodb_io_capacity = 400
innodb_write_io_threads = 4
innodb_read_io_threads = 4
innodb_adaptive_flushing = 1
innodb_flush_method = O_DIRECT
innodb_log_file_size=1G
innodb_print_all_deadlocks = 1 # to error log, if you ever have one, you will WISH you had the details. 
innodb_buffer_pool_dump_at_shutdown=1 # from OFF to allow quick warmup 
innodb_buffer_pool_load_at_startup=1 #from OFF to allow warmed buffer_pool
#skip-name-resolve=1
#log_error_verbosity=3 
log_warnings = 2 # to record Aborted Connections in error.log
3
enyceexdanny

My.cnfには、削除する必要がある4行が含まれています。

sort_buffer_size read_buffer_size read_rnd_buffer_size join_buffer_size

これらはすべて接続ごとのRAM要件であり、必要なよりもはるかに高いRAMフットプリントを駆動しています。DEFAULTSを使用して、余裕を持って応答時間を改善してくださいRAM内。my.cnfで以下を調整することを検討してください。

key_buffer_size = 512M  # from 1G because 200M is used now
innodb_buffer_pool_size = 4G  # to match RAM reported by MySQLTuner
max_connections = 100  # from 500, until more than 8 are used
thread_cache_size = 100  # from 192 MySQL v 8 recommends CAP of 100 to avoid overload
query_cache_limit     remove to allow default of 1M rather than 32M
query_cache_min_res_unit = 512  # from 4K to conserve qcache RAM used per RESULT
table_open_cache = 10000  # from 2000 to support the 28,000 opened by instance

上記の項目を構成し、シャットダウン/再起動が完了し、連続して7日(またはそれ以上)の稼働時間がある場合、my.cnfおよびMySQLTunerレポートを更新してから、別の詳細な分析を行い、OriginalPostに追加/更新してください。 、SHOW GLOBAL STATUS;グローバル変数を表示します。エンジンのINNODBステータスを表示します。最大5つの特定の追加のcfg推奨について、1日1つ適用するために監視します。

2
Wilson Hauck
query_cache_size=256M  -->  50M -- A large size can actually slow down due to purging
query_cache_type=1  -- Do you actually find it useful?  Provide SHOW GLOBAL STATUS LIKE "Qc%";

tmp_table_size=512M  --> No mo than 1% of RAM; else could lead to swapping
max_heap_table_size=512M  --> Ditto

slow_query_log=1
long_query_time=1  -- Good.  But only 18 slow queries?

thread_cache_size = 100  -- Wasting RAM since you haven't seen more than 9.

table_open_cache = 10000  -- OK if you need it.  But do you really have thousands of tables?

innodb_buffer_pool_size = 4G  -- Good (for 8G of RAM)
key_buffer_size = 512M  -- Too high if not using MyISAM

innodb_flush_log_at_trx_comm -- mispelled

innodb_max_dirty_pages_pct = 40  -- this low a setting probably leads to more I/O

[!!] Joins performed without indexes: 1453  -- Let's see some
[!!] Temporary tables created on disk: 29% (29K on disk / 98K total)  -- Let's see some

ノート:

  • 「パフォーマンスの問題から脱却する」ことはできません。上記の私の提案のいくつかは、 some に役立ちます。

  • 遅いクエリを調査する必要があります。

  • MyISAMからInnoDBに可能な限り移動します。

  • most 本番システムのクエリキャッシュをオフにする必要があります。

  • Magentoは同じサーバー上にありますか?どのくらいRAM使用していますか?)ここで与えられたすべてのアドバイスは、8GBのRAMがMySQLで利用可能であると想定しています。少ない場合は、いくつかの設定で下げられます。

  • チューニング分析の詳細については、 here を参照してください。そのブログには、このフォーラムのスペース制限に関するいくつかの提案が含まれています。また、Slowlogをどうするかを提案します。

  • 「安定性」について説明しましたが、MyISAMを使用していて、二重書き込みバッファをオフにしてinnodb_flush_log_at_trx_commitデータの整合性ではなく、パフォーマンスの設定。

より深いダイビング

さらにいくつかのことがわかりました:

所見:

Version: 5.6.36-82.1-log 
7.7 GB of RAM 
Uptime = 9d 23:50:34 
You are not running on Windows. 
Running 64-bit version 
It appears that you are running both MyISAM and InnoDB. 

より重要な問題

tmp_table_sizeおよびmax_heap_table_sizeは、512Mと非常に高いです。複数の複雑なクエリを同時に実行すると、RAMが不足し、処理速度が大幅に低下する可能性があります。 RAMそれぞれ1%(80M)未満を推奨します。(max_tmp_tablesは未使用です。)

query_cache_sizeが大きすぎると、パフォーマンスが低下します。 50Mに下げます。

テーブルスキャンはたくさんあります。セットする long_query_timeを1に設定し、SlowLogをオンにします。後で、最悪のクエリを発見し、それらに取り組みます。

二重書き込みバッファをオフにすることは、データベースの破損への小さな誘いです。

InnoDBもMyISAMも、バッファを増やす必要があるほど大きくないようです。実際、RAMが他の場所で必要な場合は、値を下げることができます。

多くの理由で、MyISAMテーブルはInnoDBに変換する必要があります。 MyISAMからInnoDBへの変換

table_open_cacheを3000に下げることもできます。

innodb_log_file_sizeは必要以上に高いですが、おそらく変更する価値はありません。

「セーブポイント」は、MySQLではめったに使用されません。彼らはあなたのためにどのように働いていますか?

詳細およびその他の観察

( (key_buffer_size - 1.2 * Key_blocks_used * 1024) / _ram ) = (512M - 1.2 * 5839 * 1024) / 8267812044.8 = 6.4%-RAMの割合がkey_bufferで無駄になりました。-key_buffer_sizeを減らしてください。

( innodb_buffer_pool_size / _ram ) = 4096M / 8267812044.8 = 51.9%-RAMの%がInnoDB buffer_poolに使用されます

( table_open_cache ) = 10,000-キャッシュするテーブル記述子の数-通常は数百が適切です。

( Innodb_buffer_pool_pages_free * 16384 / innodb_buffer_pool_size ) = 216,083 * 16384 / 4096M = 82.4%-バッファプールフリー-buffer_pool_sizeはワーキングセットよりも大きい。それを減らすことができます

( innodb_max_dirty_pages_pct ) = 40-buffer_poolがディスクへのフラッシュを開始したとき-実験中ですか?

( Innodb_buffer_pool_pages_free / Innodb_buffer_pool_pages_total ) = 216,083 / 262136 = 82.4%-現在使用されていないbuffer_poolの部分-innodb_buffer_pool_sizeが必要以上に大きいですか?

( Innodb_buffer_pool_bytes_data / innodb_buffer_pool_size ) = 735,395,840 / 4096M = 17.1%-データが使用するバッファプールの割合-小さな割合 may は、buffer_poolが不必要に大きいことを示します。

( Innodb_dblwr_pages_written/Innodb_pages_written ) = 0/1260380 = 0-これらの値は同じである必要がありますか?

( innodb_doublewrite ) = OFF-追加のI/O、ただしクラッシュ時の安全性。 -FusionIO、Galera、SlavesのOFFは問題ありません

( Innodb_os_log_written / (Uptime / 3600) / innodb_log_files_in_group / innodb_log_file_size ) = 1,246,395,904 / (863434 / 3600) / 2 / 1024M = 0.00242-比率(分を参照)

( Uptime / 60 * innodb_log_file_size / Innodb_os_log_written ) = 863,434 / 60 * 1024M / 1246395904 = 12,397-InnoDBログローテーション間の分5.6.8以降、これは動的に変更できます。 my.cnfも必ず変更してください。 -(ローテーション間の60分の推奨はやや恣意的です。)innodb_log_file_sizeを調整します。 (AWSでは変更できません。)

( Innodb_rows_deleted / Innodb_rows_inserted ) = 1,249,027 / 1276124 = 0.979-チャーン-「キューに入れず、ただ実行してください。」 (MySQLがキューとして使用されている場合。)

( expand_fast_index_creation ) = OFF-ONを使用すると、ALTERおよびOPTIMIZEが大幅に高速化される場合があります。 -おそらくONにする方が良いでしょう。

( innodb_thread_concurrency ) = 4-0 = InnoDBにconcurrency_ticketsに最適なものを決定させます。 -0に設定

( innodb_print_all_deadlocks ) = OFF-すべてのデッドロックをログに記録するかどうか。 -デッドロックに悩まされている場合は、これをオンにします。注意:デッドロックが多い場合、ディスクに大量に書き込まれる可能性があります。

( min( tmp_table_size, max_heap_table_size ) / _ram ) = min( 512M, 512M ) / 8267812044.8 = 6.5%-RAMの割り当てに必要なメモリテーブル(テーブルごと)、またはSELECT内の一時テーブル(一部のSELECTごとの一時テーブルごと)が必要です。高すぎるとスワップにつながる可能性があります。- -tmp_table_sizeとmax_heap_table_sizeをRAMの1%に減らします。

( innodb_buffer_pool_populate ) = OFF = 0-NUMAコントロール

( local_infile ) = ON-local_infile = ONは潜在的なセキュリティ問題です

( Key_blocks_used * 1024 / key_buffer_size ) = 5,839 * 1024 / 512M = 1.1%-使用されたkey_bufferのパーセント。最高水位標。 -不要なメモリ使用を回避するためにkey_buffer_sizeを小さくします。

( Key_writes / Key_write_requests ) = 131,634 / 155998 = 84.4%-書き込みに対するkey_bufferの有効性-十分なRAMがある場合、key_buffer_sizeを増やすことは価値があります。

( query_cache_size ) = 256M-QCのサイズ-小さすぎる=あまり役に立たない。大きすぎる=オーバーヘッドが多すぎる。 0または50M以下をお勧めします。

( (query_cache_size - Qcache_free_memory) / Qcache_queries_in_cache / query_alloc_block_size ) = (256M - 63512256) / 115486 / 8192 = 0.217-query_alloc_block_size vs式-query_alloc_block_sizeを調整

( Created_tmp_disk_tables / (Created_tmp_disk_tables + Created_tmp_tables) ) = 148,564 / (148564 + 549507) = 21.3%-ディスクに流出した一時テーブルのパーセント-おそらくtmp_table_sizeとmax_heap_table_sizeを増やします。ブロブなどを避ける.

( tmp_table_size ) = 512M-SELECTのサポートに使用される [〜#〜] memory [〜#〜] 一時テーブルのサイズの制限-RAMが不足しないようにtmp_table_sizeを減らします。おそらく64M以下です。

( (Com_insert + Com_update + Com_delete + Com_replace) / Com_commit ) = (257684 + 342113 + 118532 + 235) / 389763 = 1.84-コミットごとのステートメント(すべてのInnoDBを想定)-低:トランザクションでクエリをグループ化するのに役立つ場合があります。高:長いトランザクションはさまざまなことを負担します。

( Select_scan / Com_select ) = 527,912 / 1359892 = 38.8%-全表スキャンを実行する選択の%。 (ストアドルーチンにだまされる可能性があります。)-インデックスを追加する/クエリを最適化する

( binlog_error_action ) = IGNORE_ERROR-binlogを書き込めない場合の対処方法。 -IGNORE_ERRORは下位互換性のためのデフォルトですが、ABORT_SERVERが推奨されます。

( binlog_format ) = STATEMENT-STATEMENT/ROW/MIXED。 ROWが推奨されます。デフォルトになる場合があります。

( expire_logs_days ) = 0-binlogを自動的にパージするまでの時間(この数日後)-大きすぎる(またはゼロ)=ディスク容量を消費します。小さすぎる=ネットワーク/マシンのクラッシュに迅速に対応する必要がある(log_bin = OFFの場合は関係ありません)

( innodb_autoinc_lock_mode ) = 0-Galera:欲望2-2 = "インターリーブ"; 1 =「連続」が一般的です。 0 =「伝統的」。

( back_log / max_connections ) = 70 / 100 = 70.0%

( thread_cache_size ) = 100-保持する余分なプロセスの数(スレッドプーリングを使用する場合は関係ありません)(max_connectionsに基づいて5.6.8以降で自動サイズ設定)-0はWindowsに適しています0はWindows以外では非効率です。おそらく10で問題ありません

( thread_cache_size / max_connections ) = 100 / 100 = 100.0%-(Windowsの場合は0)

(以下の「異常な」値は必ずしも「悪い」とは限らず、単に珍しいだけです。)

異常に小さい:

Innodb_dblwr_pages_written = 0
Threads_connected = 0.0042 /HR
delayed_insert_timeout = 10
interactive_timeout = 20
myisam_sort_buffer_size = 1MB
query_cache_min_res_unit = 512
thread_concurrency = 4
wait_timeout = 50

異常に大きい:

Com_drop_user = 0.0042 /HR
Com_empty_query = 15 /HR
Com_release_savepoint = 0.19 /HR
Com_rollback_to_savepoint = 15 /HR
Com_savepoint = 0.19 /HR
Com_show_create_func = 0.0083 /HR
Com_show_processlist = 0.17 /sec
Com_show_status = 0.17 /sec
Com_stmt_send_long_data = 1.9 /HR
Handler_savepoint = 0.19 /HR
Handler_savepoint_rollback = 15 /HR
Open_table_definitions = 4,172
Open_tables = 7,852
Qcache_free_blocks = 49,773
Qcache_total_blocks = 287,236
max_heap_table_size = 512MB

異常な文字列:

ft_min_Word_len = 3
innodb_force_load_corrupted = OFF
innodb_support_xa = OFF
low_priority_updates = ON
optimizer_trace = enabled=off,one_line=off
optimizer_trace_features = greedy_search=on, range_optimizer=on, dynamic_range=on, repeated_subselect=on
secure_file_priv = /var/lib/mysql-files/
sha256_password_private_key_path = private_key.pem
sha256_password_public_key_path = public_key.pem
slave_rows_search_algorithms = TABLE_SCAN,INDEX_SCAN
sql_slave_skip_counter = 0
userstat = ON
1
Rick James

[mysqld]セクションで行うmy.cnfのこと:

thread_concurrency=30 # from 4 to support more concurrent processing
innodb_io_capacity_max=6000 # from 2000 (default)
innodb_io_capacity=1200 # from 400 per second
innodb_thread_concurrency=15 # from 4 
innodb_write_io_threads=8 # from 4  
key_buffer_size=16M # from 256M less than 5M used in 13 days
expire_logs_days=5 # from 0 to allow research more days
innodb_purge_threads=2 # from 1 to reduce DEL delays
innodb_read_ahead_threshold=8 # from 56 to enable read ahead quicker
innodb_stats_sample_pages=32 # from 8 for more accurate cardinality data
low_priority_updates=OFF # from ON to minimize exposure to power fails
max_join_size=1000000000 # from huge number to 1 Billion row limit
max_seeks_for_key=32 # from huge number to reasonable limit before scan
sql_select_limit=1000000000 # from huge number to 1 Billion row limit
query_prealloc_size=32768 # from 8192 to avoid RAM allocation all day for large queries
lock_wait_timeout=300 # from 31536000 secs (1 year) until replication needed

忙しい時間帯の一般的なログの1分の場合、分析により、コードの変更を提案して、21のクエリのうち1つ以上をクエリキャッシュに保存することができます。

スロークエリログの5ページは、処理時間を短縮するために可能なインデックス作成やコード変更につながる多くの詳細を明らかにします。 MySQLTunerは、インデックスのない結合について愚痴を言っています。また、=変数の両側で適切にインデックスが作成されている場合よりも時間がかかります。

Linuxシステムulimit -aから投稿すると、すべての制限が明らかになり、より多くのテーブル、テーブル定義、および使用可能なオープンファイル容量を取得するのに役立ちます。

インストールの継続的な成功。チームに役立つアイデアについては、賛成投票や承認を検討してください。

1
Wilson Hauck

このスクリプトを使用すると、計算されたRPSと各アイテムの1分あたりのレートで使用されるグローバルステータス値の10秒の経過時間レポートが可能になります。

# filename globalstatusage10sec.sql   Last Update 201801310853 whauck
# 2015-01-23 from schlomi's web site
# http://code.openark.org/blog/mysql/mysql-global-status-difference-using-single-query
# shortened AS labels for columns to be effective
SELECT STRAIGHT_JOIN
   LOWER(gs0.VARIABLE_NAME) AS variable_name,
   gs0.VARIABLE_VALUE AS "Begin",
   gs1.VARIABLE_VALUE AS "End",
   (gs1.VARIABLE_VALUE - gs0.VARIABLE_VALUE) AS diff,
   (gs1.VARIABLE_VALUE - gs0.VARIABLE_VALUE) / 10 AS psec,
   (gs1.VARIABLE_VALUE - gs0.VARIABLE_VALUE) * 60 / 10 AS
pminute
FROM
   (
     SELECT
       VARIABLE_NAME,
       VARIABLE_VALUE
     FROM
       INFORMATION_SCHEMA.GLOBAL_STATUS
     UNION ALL
     SELECT
       '',
       SLEEP(10)
     FROM DUAL
   ) AS gs0
   JOIN (
     SELECT 
       VARIABLE_NAME,
       VARIABLE_VALUE
     FROM 
       INFORMATION_SCHEMA.GLOBAL_STATUS
   ) gs1 USING (VARIABLE_NAME)
WHERE
   gs1.VARIABLE_VALUE != gs0.VARIABLE_VALUE LIMIT 0,800
;
0
Wilson Hauck