डेटाबेस में उपयोग किए जाने वाले स्टोरेज इंजन को कैसे जानें?


13

पहले, बनाए गए प्रत्येक डेटाबेस पर, मैं उपयोग करता हूं:

mysql -u root -p
CREATE DATABASE dbname CHARACTER SET utf8 COLLATE utf8_bin;
GRANT ALL ON dbname.* TO 'dbuser'@'localhost';

और फिर MyISAM या InnoDB के बारे में सोचे बिना डेटाबेस का उपयोग करें

डेटाबेस में उपयोग किए जाने वाले स्टोरेज इंजन को कैसे जानें?

जवाबों:


14

आप प्रति-तालिका इस तरह से देख सकते हैं:

USE <database>;
SHOW TABLE STATUS\G

आपको इन लाइनों के साथ एक आउटपुट मिलेगा:

root@localhost/database> show table status\G
*************************** 1. row ***************************
           Name: tablename
         Engine: MyISAM
        Version: 10
     Row_format: Fixed
           Rows: 101
 Avg_row_length: 70
    Data_length: 7070
Max_data_length: 19703248369745919
   Index_length: 2048
      Data_free: 0
 Auto_increment: 1004
    Create_time: 2009-12-07 20:15:53
    Update_time: 2010-11-10 21:55:01
     Check_time: NULL
      Collation: latin1_swedish_ci
       Checksum: NULL
 Create_options: 
        Comment: 

किसी भी तरह से आप सभी तालिकाएँ एक DB में करना जानते हैं (इसके अलावा SHOW TABLEDB में प्रत्येक तालिका के लिए एक स्क्रिप्ट लिखने के लिए)?
voretaq7

2
@ voretaq7 "SHOW TABLE STATUS" आपको डिफ़ॉल्ट रूप से सभी टेबल दिखाता है।
Coops

कूल - मैं एक पोस्टग्रेजुएट आदमी हूं इसलिए यह सब MySQL और कई स्टोरेज इंजन सामान मेरे लिए अजीब है :-)
voretaq7

5

सक्रिय डिफ़ॉल्ट इंजन को देखने के लिए 'शो इंजन' कमांड का उपयोग करें

डिफ़ॉल्ट-स्टोरेज-इंजन = InnoDB [mysqld] खंड में my.cnf फ़ाइल को डिफ़ॉल्ट इंजन के सक्रिय होने के लिए जोड़ें।

तालिका में डिफ़ॉल्ट इंजन देखने के लिए 'शो टेबल टेबल_नाम बनाएँ' कमांड का उपयोग करें।


SHOW ENGINEमुझे ERROR 1064 (42000) देता है।
मैस्ट्रैप

1
show engines;
w00t

4

यह क्वेरी MySQL में सभी InnoDB तालिकाओं और उनके डेटाबेसों को सूचीबद्ध करती है:

SELECT table_name, table_schema 
FROM information_schema.tables 
WHERE engine = 'InnoDB';

आप सभी तालिकाओं और उनके भंडारण इंजनों को भी सूचीबद्ध कर सकते हैं:

SELECT table_name, table_schema, engine
FROM information_schema.tables;

मैंने दूसरी क्वेरी की कोशिश की - मुझे त्रुटि मिलती है: ERROR 1146 (42S02): Table 'information_scheme.tables' doesn't exist (MySQL 5.6.37 पर)
nnyby

1

एक विशिष्ट तालिका के लिए इंजन का नाम प्राप्त करने के लिए

use <database_name>
show table status like '<table_name>';

इंजन बदलने के लिए

alter table <table_name> engine <engine_name>;
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.