15.15.7 & NBSP; Innodb Information_Schema Bảng thông tin tạm thời
INNODB_TEMP_TABLE_INFO
Cung cấp thông tin về các bảng tạm thời do người dùng tạo InnoDB
đang hoạt động trong trường hợp InnoDB
. Nó không cung cấp thông tin về các bảng tạm thời InnoDB
được sử dụng bởi trình tối ưu hóa.
mysql> SHOW TABLES FROM INFORMATION_SCHEMA LIKE 'INNODB_TEMP%';
+---------------------------------------------+
| Tables_in_INFORMATION_SCHEMA [INNODB_TEMP%] |
+---------------------------------------------+
| INNODB_TEMP_TABLE_INFO |
+---------------------------------------------+
Đối với định nghĩa bảng, xem phần & nbsp; 26.4.27, trên bảng thông tin_schema innodb_temp_table_info bảng.
Example 15.12 INNODB_TEMP_TABLE_INFO
Ví dụ này cho thấy các đặc điểm của bảng INNODB_TEMP_TABLE_INFO
.
Tạo bảng tạm thời
InnoDB
đơn giản:mysql> CREATE TEMPORARY TABLE t1 [c1 INT PRIMARY KEY] ENGINE=INNODB;
Truy vấn
INNODB_TEMP_TABLE_INFO
Để xem siêu dữ liệu bảng tạm thời.mysql> SELECT * FROM INFORMATION_SCHEMA.INNODB_TEMP_TABLE_INFO\G *************************** 1. row *************************** TABLE_ID: 194 NAME: #sql7a79_1_0 N_COLS: 4 SPACE: 182
4 là một định danh duy nhất cho bảng tạm thời. Cộtmysql> CREATE TEMPORARY TABLE t1 [c1 INT PRIMARY KEY] ENGINE=INNODB;
5 hiển thị tên do hệ thống tạo ra cho bảng tạm thời, được đặt trước với số #SQL. Số lượng cột [mysql> CREATE TEMPORARY TABLE t1 [c1 INT PRIMARY KEY] ENGINE=INNODB;
6] là 4 thay vì 1 vìmysql> CREATE TEMPORARY TABLE t1 [c1 INT PRIMARY KEY] ENGINE=INNODB;
InnoDB
luôn tạo ra ba cột bảng ẩn [
8,mysql> CREATE TEMPORARY TABLE t1 [c1 INT PRIMARY KEY] ENGINE=INNODB;
9 vàmysql> CREATE TEMPORARY TABLE t1 [c1 INT PRIMARY KEY] ENGINE=INNODB;
0].“#sql”. The number of columns [mysql> SELECT * FROM INFORMATION_SCHEMA.INNODB_TEMP_TABLE_INFO\G *************************** 1. row *************************** TABLE_ID: 194 NAME: #sql7a79_1_0 N_COLS: 4 SPACE: 182
6] is 4 rather than 1 becausemysql> CREATE TEMPORARY TABLE t1 [c1 INT PRIMARY KEY] ENGINE=INNODB;
InnoDB
always creates three hidden table columns [
8,mysql> CREATE TEMPORARY TABLE t1 [c1 INT PRIMARY KEY] ENGINE=INNODB;
9, andmysql> CREATE TEMPORARY TABLE t1 [c1 INT PRIMARY KEY] ENGINE=INNODB;
0].mysql> SELECT * FROM INFORMATION_SCHEMA.INNODB_TEMP_TABLE_INFO\G *************************** 1. row *************************** TABLE_ID: 194 NAME: #sql7a79_1_0 N_COLS: 4 SPACE: 182
Khởi động lại MySQL và truy vấn
INNODB_TEMP_TABLE_INFO
.mysql> SELECT * FROM INFORMATION_SCHEMA.INNODB_TEMP_TABLE_INFO\G
Một bộ trống được trả về vì
INNODB_TEMP_TABLE_INFO
và dữ liệu của nó không được sử dụng cho đĩa khi máy chủ bị tắt.Tạo một bảng tạm thời mới.
mysql> CREATE TEMPORARY TABLE t1 [c1 INT PRIMARY KEY] ENGINE=INNODB;
Truy vấn
INNODB_TEMP_TABLE_INFO
Để xem siêu dữ liệu bảng tạm thời.mysql> SELECT * FROM INFORMATION_SCHEMA.INNODB_TEMP_TABLE_INFO\G *************************** 1. row *************************** TABLE_ID: 196 NAME: #sql7b0e_1_0 N_COLS: 4 SPACE: 184
4 là một định danh duy nhất cho bảng tạm thời. Cộtmysql> CREATE TEMPORARY TABLE t1 [c1 INT PRIMARY KEY] ENGINE=INNODB;
5 hiển thị tên do hệ thống tạo ra cho bảng tạm thời, được đặt trước với số #SQL. Số lượng cột [mysql> CREATE TEMPORARY TABLE t1 [c1 INT PRIMARY KEY] ENGINE=INNODB;
6] là 4 thay vì 1 vìmysql> CREATE TEMPORARY TABLE t1 [c1 INT PRIMARY KEY] ENGINE=INNODB;
InnoDB
luôn tạo ra ba cột bảng ẩn [
8,mysql> CREATE TEMPORARY TABLE t1 [c1 INT PRIMARY KEY] ENGINE=INNODB;
9 vàmysql> CREATE TEMPORARY TABLE t1 [c1 INT PRIMARY KEY] ENGINE=INNODB;
0].mysql> SELECT * FROM INFORMATION_SCHEMA.INNODB_TEMP_TABLE_INFO\G *************************** 1. row *************************** TABLE_ID: 194 NAME: #sql7a79_1_0 N_COLS: 4 SPACE: 182
13.1.20.2 & nbsp; Tạo câu lệnh bảng tạm thời
Bạn có thể sử dụng từ khóa
mysql> SELECT * FROM INFORMATION_SCHEMA.INNODB_TEMP_TABLE_INFO\G
*************************** 1. row ***************************
TABLE_ID: 194
NAME: #sql7a79_1_0
N_COLS: 4
SPACE: 182
5 khi tạo bảng. Một bảng mysql> SELECT * FROM INFORMATION_SCHEMA.INNODB_TEMP_TABLE_INFO\G
*************************** 1. row ***************************
TABLE_ID: 194
NAME: #sql7a79_1_0
N_COLS: 4
SPACE: 182
5 chỉ hiển thị trong phiên hiện tại và tự động bị hủy khi phiên được đóng. Điều này có nghĩa là hai phiên khác nhau có thể sử dụng cùng một tên bảng tạm thời mà không mâu thuẫn với nhau hoặc với một bảng không có cùng tên hiện có. [Bảng hiện tại được ẩn cho đến khi bảng tạm thời bị bỏ.] InnoDB
không hỗ trợ các bảng tạm thời nén. Khi
mysql> SELECT * FROM INFORMATION_SCHEMA.INNODB_TEMP_TABLE_INFO\G
*************************** 1. row ***************************
TABLE_ID: 194
NAME: #sql7a79_1_0
N_COLS: 4
SPACE: 182
9 được bật [mặc định], mysql> SELECT * FROM INFORMATION_SCHEMA.INNODB_TEMP_TABLE_INFO\G
0 sẽ trả về lỗi nếu mysql> SELECT * FROM INFORMATION_SCHEMA.INNODB_TEMP_TABLE_INFO\G
1 hoặc mysql> SELECT * FROM INFORMATION_SCHEMA.INNODB_TEMP_TABLE_INFO\G
2 được chỉ định. Nếu mysql> SELECT * FROM INFORMATION_SCHEMA.INNODB_TEMP_TABLE_INFO\G
*************************** 1. row ***************************
TABLE_ID: 194
NAME: #sql7a79_1_0
N_COLS: 4
SPACE: 182
9 bị vô hiệu hóa, các cảnh báo sẽ được ban hành và bảng tạm thời được tạo bằng định dạng hàng không nén. Tùy chọn mysql> SELECT * FROM INFORMATION_SCHEMA.INNODB_TEMP_TABLE_INFO\G
4 không ảnh hưởng đến việc tạo bảng tạm thời InnoDB
.mysql> SELECT * FROM INFORMATION_SCHEMA.INNODB_TEMP_TABLE_INFO\G
6 gây ra một cam kết ngầm, ngoại trừ khi được sử dụng với từ khóa mysql> SELECT * FROM INFORMATION_SCHEMA.INNODB_TEMP_TABLE_INFO\G
*************************** 1. row ***************************
TABLE_ID: 194
NAME: #sql7a79_1_0
N_COLS: 4
SPACE: 182
5. Xem Phần & NBSP; 13.3.3, Các câu lệnh gây ra một cam kết ngầm.
mysql> SELECT * FROM INFORMATION_SCHEMA.INNODB_TEMP_TABLE_INFO\G
*************************** 1. row ***************************
TABLE_ID: 194
NAME: #sql7a79_1_0
N_COLS: 4
SPACE: 182
5 Bảng có mối quan hệ rất lỏng lẻo với cơ sở dữ liệu [lược đồ]. Việc bỏ một cơ sở dữ liệu không tự động bỏ bất kỳ bảng mysql> SELECT * FROM INFORMATION_SCHEMA.INNODB_TEMP_TABLE_INFO\G
*************************** 1. row ***************************
TABLE_ID: 194
NAME: #sql7a79_1_0
N_COLS: 4
SPACE: 182
5 nào được tạo trong cơ sở dữ liệu đó.Để tạo một bảng tạm thời, bạn phải có đặc quyền
mysql> CREATE TEMPORARY TABLE t1 [c1 INT PRIMARY KEY] ENGINE=INNODB;
0. Sau khi một phiên đã tạo một bảng tạm thời, máy chủ không thực hiện kiểm tra đặc quyền nào trên bảng. Phiên tạo có thể thực hiện bất kỳ hoạt động nào trên bảng, chẳng hạn như mysql> CREATE TEMPORARY TABLE t1 [c1 INT PRIMARY KEY] ENGINE=INNODB;
1, mysql> CREATE TEMPORARY TABLE t1 [c1 INT PRIMARY KEY] ENGINE=INNODB;
2, mysql> CREATE TEMPORARY TABLE t1 [c1 INT PRIMARY KEY] ENGINE=INNODB;
3 hoặc mysql> CREATE TEMPORARY TABLE t1 [c1 INT PRIMARY KEY] ENGINE=INNODB;
4.Một hàm ý của hành vi này là một phiên có thể điều khiển các bảng tạm thời của nó ngay cả khi người dùng hiện tại không có đặc quyền tạo chúng. Giả sử rằng người dùng hiện tại không có đặc quyền
mysql> CREATE TEMPORARY TABLE t1 [c1 INT PRIMARY KEY] ENGINE=INNODB;
0 nhưng có thể thực thi quy trình được lưu trữ trong bối cảnh xác định thực thi với các đặc quyền của người dùng có mysql> CREATE TEMPORARY TABLE t1 [c1 INT PRIMARY KEY] ENGINE=INNODB;
0 và tạo ra bảng tạm thời. Trong khi thủ tục thực thi, phiên sử dụng các đặc quyền của người dùng xác định. Sau khi thủ tục trả về, các đặc quyền hiệu quả trở lại với những người dùng hiện tại, vẫn có thể thấy bảng tạm thời và thực hiện bất kỳ hoạt động nào trên đó.Bạn không thể sử dụng
mysql> CREATE TEMPORARY TABLE t1 [c1 INT PRIMARY KEY] ENGINE=INNODB;
7 để tạo một bảng trống dựa trên định nghĩa của một bảng nằm trong không gian bảng mysql> CREATE TEMPORARY TABLE t1 [c1 INT PRIMARY KEY] ENGINE=INNODB;
8, không gian bảng hệ thống InnoDB
[mysql> SELECT * FROM INFORMATION_SCHEMA.INNODB_TEMP_TABLE_INFO\G
*************************** 1. row ***************************
TABLE_ID: 196
NAME: #sql7b0e_1_0
N_COLS: 4
SPACE: 184
0] hoặc không gian bảng chung. Định nghĩa không gian bảng cho một bảng như vậy bao gồm thuộc tính mysql> SELECT * FROM INFORMATION_SCHEMA.INNODB_TEMP_TABLE_INFO\G
*************************** 1. row ***************************
TABLE_ID: 196
NAME: #sql7b0e_1_0
N_COLS: 4
SPACE: 184
1 xác định không gian bảng nơi bảng cư trú và các không gian bảng đã nói ở trên không hỗ trợ các bảng tạm thời. Để tạo một bảng tạm thời dựa trên định nghĩa của bảng như vậy, hãy sử dụng cú pháp này thay thế:CREATE TEMPORARY TABLE new_tbl SELECT * FROM orig_tbl LIMIT 0;
Ghi chú
Hỗ trợ cho các điều khoản
mysql> SELECT * FROM INFORMATION_SCHEMA.INNODB_TEMP_TABLE_INFO\G
*************************** 1. row ***************************
TABLE_ID: 196
NAME: #sql7b0e_1_0
N_COLS: 4
SPACE: 184
2 và mysql> SELECT * FROM INFORMATION_SCHEMA.INNODB_TEMP_TABLE_INFO\G
*************************** 1. row ***************************
TABLE_ID: 196
NAME: #sql7b0e_1_0
N_COLS: 4
SPACE: 184
3 với mysql> SELECT * FROM INFORMATION_SCHEMA.INNODB_TEMP_TABLE_INFO\G
*************************** 1. row ***************************
TABLE_ID: 196
NAME: #sql7b0e_1_0
N_COLS: 4
SPACE: 184
4 không được chấp nhận kể từ MySQL 8.0.13; Mong đợi nó được loại bỏ trong một phiên bản tương lai của MySQL.