Hướng dẫn how do i view a temporary table in mysql? - làm cách nào để xem bảng tạm thời trong mysql?

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.

  1. Tạo bảng tạm thời InnoDB đơn giản:

    mysql> CREATE TEMPORARY TABLE t1 (c1 INT PRIMARY KEY) ENGINE=INNODB;
  2. 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

    mysql> CREATE TEMPORARY TABLE t1 (c1 INT PRIMARY KEY) ENGINE=INNODB;
    4 là một định danh duy nhất cho bảng tạm thời. Cột
    mysql> 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ì InnoDB luôn tạo ra ba cột bảng ẩn (
    mysql> CREATE TEMPORARY TABLE t1 (c1 INT PRIMARY KEY) ENGINE=INNODB;
    8,
    mysql> CREATE TEMPORARY TABLE t1 (c1 INT PRIMARY KEY) ENGINE=INNODB;
    9 và
    mysql> SELECT * FROM INFORMATION_SCHEMA.INNODB_TEMP_TABLE_INFO\G
    *************************** 1. row ***************************
                TABLE_ID: 194
                    NAME: #sql7a79_1_0
                  N_COLS: 4
                   SPACE: 182
    0).#sql. The number of columns (
    mysql> CREATE TEMPORARY TABLE t1 (c1 INT PRIMARY KEY) ENGINE=INNODB;
    6) is 4 rather than 1 because InnoDB always creates three hidden table columns (
    mysql> CREATE TEMPORARY TABLE t1 (c1 INT PRIMARY KEY) ENGINE=INNODB;
    8,
    mysql> CREATE TEMPORARY TABLE t1 (c1 INT PRIMARY KEY) ENGINE=INNODB;
    9, and
    mysql> SELECT * FROM INFORMATION_SCHEMA.INNODB_TEMP_TABLE_INFO\G
    *************************** 1. row ***************************
                TABLE_ID: 194
                    NAME: #sql7a79_1_0
                  N_COLS: 4
                   SPACE: 182
    0).

  3. 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.

  4. Tạo một bảng tạm thời mới.

    mysql> CREATE TEMPORARY TABLE t1 (c1 INT PRIMARY KEY) ENGINE=INNODB;
  5. 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

    mysql> CREATE TEMPORARY TABLE t1 (c1 INT PRIMARY KEY) ENGINE=INNODB;
    4 là một định danh duy nhất cho bảng tạm thời. Cột
    mysql> 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ì InnoDB luôn tạo ra ba cột bảng ẩn (
    mysql> CREATE TEMPORARY TABLE t1 (c1 INT PRIMARY KEY) ENGINE=INNODB;
    8,
    mysql> CREATE TEMPORARY TABLE t1 (c1 INT PRIMARY KEY) ENGINE=INNODB;
    9 và
    mysql> SELECT * FROM INFORMATION_SCHEMA.INNODB_TEMP_TABLE_INFO\G
    *************************** 1. row ***************************
                TABLE_ID: 194
                    NAME: #sql7a79_1_0
                  N_COLS: 4
                   SPACE: 182
    0).



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.

Các bảng nhiệt độ MySQL được lưu trữ ở đâu?

Một bảng tạm thời bên trong có thể được giữ trong bộ nhớ và được xử lý bởi công cụ lưu trữ bộ nhớ hoặc được lưu trữ trên đĩa bởi công cụ lưu trữ Innodb hoặc Myisam. Nếu một bảng tạm thời nội bộ được tạo dưới dạng bảng trong bộ nhớ nhưng trở nên quá lớn, MySQL sẽ tự động chuyển đổi nó thành bảng trên đĩa.in memory and processed by the MEMORY storage engine, or stored on disk by the InnoDB or MyISAM storage engine. If an internal temporary table is created as an in-memory table but becomes too large, MySQL automatically converts it to an on-disk table.

Chúng ta có thể xem bảng tạm thời trong SQL không?

Các bảng tạm thời toàn cầu có thể nhìn thấy tất cả các kết nối và bị rơi khi kết nối cuối cùng tham chiếu bảng được đóng.Tên bảng toàn cầu phải có một tên bảng duy nhất.Sẽ không có số ngẫu nhiên được hậu tố ở cuối tên bảng.. Global Table Name must have an Unique Table Name. There will be no random Numbers suffixed at the end of the Table Name.

MySQL có thể mở bảng tạm thời không?

Một bảng tạm thời chỉ có thể được truy cập bởi máy khách tạo nó trong MySQL.Các khách hàng khác nhau có thể phát triển các bảng tạm thời có cùng tên mà không cần ném bất kỳ lỗi nào.Điều này xảy ra bởi vì chỉ khách hàng tạo bảng tạm thời có thể nhìn thấy nó.. Different clients can develop Temporary Tables with the same name without throwing any errors. This happens because only the client creating the temporary table can see it.

Làm thế nào tôi có thể kiểm tra sự tồn tại của một bảng tạm thời?

Làm cách nào để kiểm tra nếu một bảng tạm thời tồn tại ?..
Tạo bảng kiểm tra (id int).
Tạo Bảng #TestTable (ID int).
Chọn * Từ Tempdb.Sys.Tables nơi tên như '#testtable%'.
Chọn Object_id ('Tempdb ..#testTable', 'u').
Nếu object_id ('tempdb .. #testtable', 'u') không phải là null ..