จะรู้กลไกจัดเก็บข้อมูลที่ใช้กับฐานข้อมูลได้อย่างไร?


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: 

คุณรู้วิธีที่จะทำทุกตารางในฐานข้อมูล (นอกเหนือจากการเขียนสคริปต์ไปยังSHOW TABLEแต่ละตารางในฐานข้อมูล)?
voretaq7

2
@ voretaq7 "สถานะตารางแสดง" จะแสดงตารางทั้งหมดตามค่าเริ่มต้น
Coops

เจ๋ง - ฉันเป็นคน postgres ดังนั้นทั้งหมดนี้ MySQL และเครื่องมือเก็บข้อมูลหลายอันแปลกสำหรับฉัน :-)
voretaq7

5

ใช้คำสั่ง 'show engine' เพื่อดูเอ็นจิ้นเริ่มต้นที่ใช้งานอยู่

เพิ่ม default-storage-engine = InnoDB ในส่วน [mysqld] ของไฟล์ my.cnf เพื่อให้เอ็นจิ้นเริ่มต้นทำงาน

ใช้คำสั่ง 'show table table_name' เพื่อดูเอ็นจิ้นเริ่มต้นในตาราง


SHOW ENGINEให้ข้อผิดพลาด 1,064 (42000)
mstrap

1
show engines;
w00t

4

แบบสอบถามนี้แสดงรายการตาราง InnoDB ทั้งหมดและฐานข้อมูลใน MySQL:

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>;
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.