आप प्रत्येक तालिका के डेटाइम स्टैम्प के बारे में भी सुनिश्चित करना चाहते हैं। हर तालिका के लिए सिस्टम में किसी भी मेटाडेटा के लिए खोजें, डेटाइम द्वारा इस सूची को अंतिम रूप से अपडेट किया गया है, और डेटटाइम द्वारा डेस ऑर्डर में आउटपुट प्रदर्शित करता है। आप आकार में मामूली परिवर्तन के लिए तालिका आकार भी जांच सकते हैं।
उदाहरण के लिए, MySQL 5.x में, आपके पास info_schema.tables है जो इस तरह दिखता है:
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)
स्तंभ UPDATE_TIME ने पिछली बार किसी भी INSERT, UPDATE, या DELETE को अंतिम बार टेबल पर लागू किया गया था। जब प्रत्येक डेटाबेस अंतिम बार एक्सेस किया गया था, तो आप यह पता लगाने के लिए इन तरह के प्रश्नों को चला सकते थे:
पिछली बार प्रत्येक डेटाबेस में एक तालिका एक्सेस की गई थी:
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;
पिछली बार किसी भी डेटाबेस में एक टेबल एक्सेस की गई थी:
SELECT MAX(update_time) last_accessed FROM information_schema.tables
WHERE table_schema NOT IN ('information_schema','mysql');
अंतिम 10 तारीखों को एक तालिका एक्सेस की गई:
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;
MySQL से ऐसे मेटाडेटा कैसे प्राप्त करें, ये कुछ उदाहरण हैं। मुझे यकीन है कि Oracle और SQL सर्वर के समान या बेहतर तरीके हैं।
एक बार जब आप निश्चित रूप से कितनी बार या शायद ही कभी किसी डेटाबेस (या स्कीमा) को एक्सेस करते हैं, तो आपको डेटा के अलावा स्कीमा की प्रतियों के साथ-साथ पुराने डेटाबेस को मैन्युअल रूप से डंप / एक्सपोर्ट करना चाहिए। कृपया क्षमा करें कि मेरा उत्तर डीबी अज्ञेयवादी नहीं है। SQLServer और Oracle DBAs को अपने उत्तर यहां भी देने चाहिए, क्योंकि स्कीमा की अवधारणा MySQL में डेटाबेस संग्रह में संग्रहित की जाती है, लेकिन SQLServer और Oracle में बहुत सख्ती से पालन किया जाता है।