Làm thế nào để biết công cụ lưu trữ được sử dụng của cơ sở dữ liệu?


11

Trước đây, trên mỗi cơ sở dữ liệu được tạo, tôi sử dụng:

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

và sau đó sử dụng cơ sở dữ liệu mà không cần suy nghĩ về MyISAM hoặc InnoDB

Làm thế nào để biết công cụ lưu trữ được sử dụng của cơ sở dữ liệu?

Câu trả lời:


12

Bạn có thể kiểm tra mỗi bàn như thế này:

USE <database>;
SHOW TABLE STATUS\G

bạn sẽ nhận được một đầu ra dọc theo các dòng này:

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: 

có cách nào bạn biết để thực hiện tất cả các bảng trong DB không (ngoài việc viết tập lệnh SHOW TABLEcho mỗi bảng trong DB)?
voretaq7

2
@ voretaq7 "SHOW TABLE STATUS" hiển thị cho bạn tất cả các bảng theo mặc định.
Coops

tuyệt vời - Tôi là một người thích postgres vì ​​vậy tất cả các công cụ MySQL và nhiều công cụ lưu trữ này đều lạ đối với tôi :-)
voretaq7

5

Sử dụng lệnh 'show engine' để xem công cụ mặc định hoạt động

Thêm default-Storage-engine = InnoDB trong phần [mysqld] của tệp my.cnf để công cụ mặc định được kích hoạt.

Sử dụng lệnh 'hiển thị tạo bảng tên_bảng' để xem công cụ mặc định trong bảng.


SHOW ENGINEcho tôi LRI 1064 (42000).
mstrap

1
show engines;
w00t

4

Truy vấn này liệt kê tất cả các bảng InnoDB và cơ sở dữ liệu của chúng trong MySQL:

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

Bạn cũng có thể liệt kê tất cả các bảng và công cụ lưu trữ của chúng:

SELECT table_name, table_schema, engine
FROM information_schema.tables;

Tôi đã thử truy vấn thứ hai - Tôi gặp lỗi: ERROR 1146 (42S02): Table 'information_scheme.tables' doesn't exist (trên MySQL 5.6.37)
nnyby

1

Để có được tên động cơ cho một bảng cụ thể

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

Để thay đổi động cơ

alter table <table_name> engine <engine_name>;
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.