Anda juga ingin memastikan perangko datetime dari setiap tabel. Cari metadata apa saja di sistem untuk setiap tabel, pesan daftar seperti itu menurut datetime terakhir diperbarui, dan tampilkan output dalam urutan desc pada datetime. Anda juga bisa memeriksa ukuran tabel meskipun ada sedikit perubahan ukuran.
Misalnya, di MySQL 5.x, Anda memiliki information_schema.tables yang terlihat seperti ini:
mysql> desc information_schema.tables;
+-----------------+---------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------------+---------------------+------+-----+---------+-------+
| TABLE_CATALOG | varchar(512) | NO | | | |
| TABLE_SCHEMA | varchar(64) | NO | | | |
| TABLE_NAME | varchar(64) | NO | | | |
| TABLE_TYPE | varchar(64) | NO | | | |
| ENGINE | varchar(64) | YES | | NULL | |
| VERSION | bigint(21) unsigned | YES | | NULL | |
| ROW_FORMAT | varchar(10) | YES | | NULL | |
| TABLE_ROWS | bigint(21) unsigned | YES | | NULL | |
| AVG_ROW_LENGTH | bigint(21) unsigned | YES | | NULL | |
| DATA_LENGTH | bigint(21) unsigned | YES | | NULL | |
| MAX_DATA_LENGTH | bigint(21) unsigned | YES | | NULL | |
| INDEX_LENGTH | bigint(21) unsigned | YES | | NULL | |
| DATA_FREE | bigint(21) unsigned | YES | | NULL | |
| AUTO_INCREMENT | bigint(21) unsigned | YES | | NULL | |
| CREATE_TIME | datetime | YES | | NULL | |
| UPDATE_TIME | datetime | YES | | NULL | |
| CHECK_TIME | datetime | YES | | NULL | |
| TABLE_COLLATION | varchar(32) | YES | | NULL | |
| CHECKSUM | bigint(21) unsigned | YES | | NULL | |
| CREATE_OPTIONS | varchar(255) | YES | | NULL | |
| TABLE_COMMENT | varchar(2048) | NO | | | |
+-----------------+---------------------+------+-----+---------+-------+
21 rows in set (0.01 sec)
Kolom UPDATE_TIME mencatat kapan terakhir kali INSERT, UPDATE, atau DELETE terakhir diterapkan pada tabel. Anda bisa menjalankan kueri seperti ini untuk mencari tahu kapan setiap basis data terakhir diakses:
Terakhir kali tabel diakses di setiap basis data:
SELECT table_schema,MAX(update_time) last_accessed
FROM information_schema.tables
WHERE table_schema NOT IN ('information_schema','mysql')
AND update_time IS NOT NULL
GROUP BY table_schema;
Terakhir kali tabel diakses di basis data apa pun:
SELECT MAX(update_time) last_accessed FROM information_schema.tables
WHERE table_schema NOT IN ('information_schema','mysql');
10 tanggal terakhir sebuah tabel diakses:
SELECT * FROM
(SELECT * FROM
(SELECT last_accessed,COUNT(1) access_count
FROM (SELECT DATE(update_time) last_accessed
FROM information_schema.tables
WHERE table_schema NOT IN ('information_schema','mysql')
AND update_time IS NOT NULL) A
GROUP BY last_accessed) AA
ORDER BY last_accessed DESC) AAA
LIMIT 10;
Ini hanya beberapa contoh cara mendapatkan metadata dari MySQL. Saya yakin Oracle dan SQL Server memiliki metode yang sama atau lebih baik.
Setelah Anda yakin seberapa sering atau jarang suatu basis data (atau skema) diakses, Anda harus secara manual membuang / mengekspor basis data yang berusia bersama dengan salinan skema itu sendiri selain dari data. Maaf, jawaban saya bukan DB agnostik. SQLServer dan Oracle DBAs juga harus menyuarakan jawaban mereka di sini, karena konsep skema yang menjadi kumpulan dalam instance database dikaburkan di MySQL tetapi sangat ketat diikuti dalam SQLServer dan Oracle.