MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

MySQLデータベースの最終アクセス(更新)時刻を取得する方法

MySQLでテーブルが最後にアクセス(更新)された日時を確認したい場合、INFORMATION_SCHEMA.TABLESからupdate_timeカラムを参照することで取得できます。

基本構文

最終更新時刻を取得するには、以下の構文を使用します。

SELECT update_time
FROM INFORMATION_SCHEMA.TABLES
WHERE table_schema = 'yourDatabaseName'
AND table_name = 'yourTableName';

なお、この方法で正確な更新時刻を取得できるのは、MyISAMエンジンを使用しているテーブルです。InnoDBの場合の挙動については後述します。

ここでは、サンプルとしてデータベース「business」内のテーブル「twoprimarykeytabledemo」を使用して実際に確認していきます。

ケース1:MyISAMテーブルの場合

まず、以下のクエリを実行します。

mysql> SELECT update_time
    -> FROM INFORMATION_SCHEMA.TABLES
    -> WHERE table_schema = 'business'
    -> AND table_name = 'twoprimarykeytabledemo';

実行結果は以下の通りです。

+---------------------+
| UPDATE_TIME         |
+---------------------+
| 2018-11-21 16:51:50 |
+---------------------+
1 row in set (0.24 sec)

このように、テーブルが最後に更新された日時「2018-11-21 16:51:50」が返されます。

ケース2:別のテーブルで確認する場合

同じデータベース内の別のテーブル「currenttimezone」に対しても同様に実行できます。

mysql> SELECT update_time
    -> FROM INFORMATION_SCHEMA.TABLES
    -> WHERE table_schema = 'business'
    -> AND table_name = 'currenttimezone';

実行結果:

+---------------------+
| UPDATE_TIME         |
+---------------------+
| 2018-10-29 17:20:18 |
+---------------------+
1 row in set (0.20 sec)

ケース3:InnoDBテーブルの場合はNULLが返る

注意点として、テーブルのストレージエンジンがInnoDBである場合、update_timeにはNULLが返されます。

mysql> SELECT update_time
    -> FROM INFORMATION_SCHEMA.TABLES
    -> WHERE table_schema = 'business'
    -> AND table_name = 'zerofilldemo';

実行結果:

+-------------+
| UPDATE_TIME |
+-------------+
| NULL        |
+-------------+
1 row in set (0.09 sec)

補足:テーブルのストレージエンジンを確認する方法

対象テーブルがMyISAMかInnoDBかを事前に確認したい場合は、次のクエリでストレージエンジンを調べられます。

SELECT engine
FROM INFORMATION_SCHEMA.TABLES
WHERE table_schema = 'yourDatabaseName'
AND table_name = 'yourTableName';

また、MySQL 5.7以降ではinformation_schema_stats_expiryシステム変数の設定により、InnoDBテーブルでもキャッシュされた統計情報から更新時刻が取得できる場合があります。必要に応じて以下のように設定値を確認してください。

SELECT @@information_schema_stats_expiry;

まとめ

  • INFORMATION_SCHEMA.TABLESupdate_timeを参照することで、テーブルの最終更新時刻を取得できる。
  • MyISAMエンジンのテーブルでは正確な更新日時が得られる。
  • InnoDBエンジンのテーブルではNULLが返される点に注意が必要。
  1. PythonでMySQLデータベースへの挿入後にIDを取得する方法

    はじめに PythonからMySQLデータベースへレコードを挿入する際、「今挿入したばかりのレコードのID(AUTO_INCREMENTで自動採番された値)をすぐに取得したい」というケースは非常によくあります。本記事では、pymysqlライブラリを使ってMySQLにデータを挿入し、その直後にIDを取得する具体的な手順を解説します。 前提条件 作業を始める前に、以下の環境が整っていることを確認してください。 MySQL 8.0.12 がインストールされていること Python 3.6.3(32ビット) がインストールされていること pipコマンドで pymysql がインストールされているこ

  2. AccessデータベースでMySQLのLIMIT句をシミュレートする方法

    AccessデータベースでLIMIT句をシミュレートする方法Microsoft Accessには、MySQLのLIMIT句に直接相当する構文は存在しません。しかし、代わりにTOP句を使用することで、同じようにクエリ結果の先頭から指定した件数のレコードを取得することが可能です。この記事では、実際にテーブルを作成し、データを挿入しながら、AccessでLIMIT句と同等の処理を実現する手順を解説します。ステップ1:テーブルの作成まず、サンプル用のテーブルを作成します。ステップ2:レコードの挿入次に、INSERTコマンドを使用してテーブルにレコードを挿入します。ステップ3:LIMIT句をシミュレート