で助けてください:
mysql> SHOW ENGINE INNODB STATUS\G
...
--------
FILE I/O
--------
I/O thread 0 state: waiting for i/o request (insert buffer thread)
I/O thread 1 state: waiting for i/o request (log thread)
I/O thread 2 state: waiting for i/o request (read thread)
I/O thread 3 state: waiting for i/o request (read thread)
I/O thread 4 state: waiting for i/o request (read thread)
I/O thread 5 state: waiting for i/o request (read thread)
I/O thread 6 state: waiting for i/o request (write thread)
I/O thread 7 state: waiting for i/o request (write thread)
I/O thread 8 state: waiting for i/o request (write thread)
I/O thread 9 state: waiting for i/o request (write thread)
Pending normal aio reads: 0 [0, 0, 0, 0] , aio writes: 0 [0, 0, 0, 0] ,
ibuf aio reads: 0, log i/o's: 0, sync i/o's: 0
Pending flushes (fsync) log: 0; buffer pool: 0
431 OS file reads, 69 OS file writes, 53 OS fsyncs
0.00 reads/s, 0 avg bytes/read, 0.00 writes/s, 0.00 fsyncs/s
...
私は69 OSのファイルが書き込みされている上記を参照してください。私のラップトップで実行されているサンドボックスのMySQLインスタンスからこの情報が得られたため、上記の数値は小さいです。
上記のJimGarrisonによってコメントされたように、INNODB STATUSによって報告された情報のほとんどは、INFORMATION_SCHEMA.INNODB_METRICSテーブルの個々の行として利用できます。これは、SHOW ENGINE INNODB STATUSよりもJavaで使いやすく、テキストを解析しようとする方が簡単です。
mysql> SELECT * FROM INFORMATION_SCHEMA.INNODB_METRICS
WHERE NAME = 'os_data_writes'\G
NAME: os_data_writes
SUBSYSTEM: os
COUNT: 69
MAX_COUNT: 69
MIN_COUNT: NULL
AVG_COUNT: 0.0034979215248910067
COUNT_RESET: 69
MAX_COUNT_RESET: 69
MIN_COUNT_RESET: NULL
AVG_COUNT_RESET: NULL
TIME_ENABLED: 2017-12-22 10:27:50
TIME_DISABLED: NULL
TIME_ELAPSED: 19726
TIME_RESET: NULL
STATUS: enabled
TYPE: status_counter
COMMENT: Number of writes initiated (innodb_data_writes)
読むhttps://dev.mysql.com/doc/refman/5.7/en/innodb-information-schema-metrics-table.html
私はあなたがすでにクエリを実行し、結果を取得する方法を知っている、Javaコードは表示されません。これらのステートメントは、SELECT
クエリと同じ方法でSQLステートメントとして実行できます。
コードに何が問題がありますか?注意: 'rs.getString(1).equals(" Innodb ")'のような文字列を比較してください。 –
上記のコードに問題はありません。私はInnodbを使ってMySQLのディスク書き込み総数を取得する機能を追加したいだけです。 –
Innodbを使ってテーブルのディスクのサイズを取得したいのですか? –