13.7.7.24 & NBSP; Hiển thị câu lệnh Mở Bảng
SHOW OPEN TABLES
[{FROM | IN} db_name]
[LIKE 'pattern' | WHERE expr]
SHOW OPEN TABLES
liệt kê các bảng không phải là không phải hiện đang mở trong bộ đệm bảng. Xem Phần & NBSP; 8.4.3.1, Cách MySQL mở và đóng bảng. Điều khoản FROM
, nếu có, hạn chế các bảng được hiển thị cho các bảng có trong cơ sở dữ liệu db_name
. Điều khoản LIKE
, nếu có, chỉ ra tên bảng nào phù hợp. Điều khoản WHERE
có thể được đưa ra để chọn các hàng bằng cách sử dụng các điều kiện chung hơn, như được thảo luận trong Phần & NBSP; 26.8, Phần mở rộng để hiển thị các câu lệnh.
SHOW OPEN TABLES
Đầu ra có các cột sau:
0Uptime: 426 Running threads: 1 Questions: 11082 Reloads: 1 Open tables: 12
Cơ sở dữ liệu chứa bảng.
1Uptime: 426 Running threads: 1 Questions: 11082 Reloads: 1 Open tables: 12
Tên bảng.
2Uptime: 426 Running threads: 1 Questions: 11082 Reloads: 1 Open tables: 12
Số lượng khóa bảng hoặc yêu cầu khóa có cho bảng. Ví dụ: nếu một máy khách có được khóa cho bảng bằng cách sử dụng
3,Uptime: 426 Running threads: 1 Questions: 11082 Reloads: 1 Open tables: 12
2 là 1. Nếu một máy khách khác phát hànhUptime: 426 Running threads: 1 Questions: 11082 Reloads: 1 Open tables: 12
3 trong khi bảng vẫn bị khóa, máy khách sẽ chặn, chờ khóa, nhưng yêu cầu khóa khiếnUptime: 426 Running threads: 1 Questions: 11082 Reloads: 1 Open tables: 12
2 là 2. Nếu Số đếm bằng không, bảng mở nhưng hiện không được sử dụng.Uptime: 426 Running threads: 1 Questions: 11082 Reloads: 1 Open tables: 12
2 cũng được tăng lên bởi tuyên bốUptime: 426 Running threads: 1 Questions: 11082 Reloads: 1 Open tables: 12
8 và giảmUptime: 426 Running threads: 1 Questions: 11082 Reloads: 1 Open tables: 12
9.Uptime: 426 Running threads: 1 Questions: 11082 Reloads: 1 Open tables: 12
0mysql> SHOW GLOBAL STATUS LIKE 'Opened_tables'; +---------------+-------+ | Variable_name | Value | +---------------+-------+ | Opened_tables | 2741 | +---------------+-------+
Cho dù tên bảng bị khóa. Khóa tên được sử dụng cho các hoạt động như thả hoặc đổi tên bảng.
Nếu bạn không có đặc quyền cho một bảng, nó không hiển thị trong đầu ra từ SHOW OPEN TABLES
.
8.4.3.1 & nbsp; Cách MySQL mở và đóng bảng
Khi bạn thực thi lệnh trạng thái mysqladmin, bạn sẽ thấy một cái gì đó như thế này:mysqladmin status command, you should see something like this:
Uptime: 426 Running threads: 1 Questions: 11082
Reloads: 1 Open tables: 12
Giá trị
mysql> SHOW GLOBAL STATUS LIKE 'Opened_tables';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| Opened_tables | 2741 |
+---------------+-------+
2 của 12 có thể hơi khó hiểu nếu bạn có ít hơn 12 bảng.MySQL được đa luồng, vì vậy có thể có nhiều khách hàng phát hành truy vấn cho một bảng nhất định. Để giảm thiểu vấn đề với nhiều phiên khách có trạng thái khác nhau trên cùng một bảng, bảng được mở độc lập bởi mỗi phiên đồng thời. Điều này sử dụng bộ nhớ bổ sung nhưng thường tăng hiệu suất. Với các bảng
mysql> SHOW GLOBAL STATUS LIKE 'Opened_tables';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| Opened_tables | 2741 |
+---------------+-------+
3, một bộ mô tả tệp bổ sung là bắt buộc cho tệp dữ liệu cho mỗi máy khách có bảng mở. [Ngược lại, bộ mô tả tệp chỉ mục được chia sẻ giữa tất cả các phiên.]Các biến hệ thống
mysql> SHOW GLOBAL STATUS LIKE 'Opened_tables';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| Opened_tables | 2741 |
+---------------+-------+
4 và mysql> SHOW GLOBAL STATUS LIKE 'Opened_tables';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| Opened_tables | 2741 |
+---------------+-------+
5 ảnh hưởng đến số lượng tệp tối đa mà máy chủ vẫn mở. Nếu bạn tăng một hoặc cả hai giá trị này, bạn có thể chạy lên so với giới hạn được áp đặt bởi hệ điều hành của bạn đối với số lượng mô tả tệp mở trên mỗi quy trình. Nhiều hệ điều hành cho phép bạn tăng giới hạn tệp mở, mặc dù phương pháp thay đổi từ hệ thống này sang hệ thống khác. Tham khảo tài liệu hệ điều hành của bạn để xác định xem có thể tăng giới hạn hay không và cách làm như vậy.
mysql> SHOW GLOBAL STATUS LIKE 'Opened_tables';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| Opened_tables | 2741 |
+---------------+-------+
4 có liên quan đến mysql> SHOW GLOBAL STATUS LIKE 'Opened_tables';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| Opened_tables | 2741 |
+---------------+-------+
5. Ví dụ: trong 200 kết nối chạy đồng thời, chỉ định kích thước bộ đệm bảng ít nhất là mysql> SHOW GLOBAL STATUS LIKE 'Opened_tables';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| Opened_tables | 2741 |
+---------------+-------+
8, trong đó mysql> SHOW GLOBAL STATUS LIKE 'Opened_tables';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| Opened_tables | 2741 |
+---------------+-------+
9 là số bảng tối đa mỗi lần tham gia vào bất kỳ truy vấn nào bạn thực hiện. Bạn cũng phải bảo lưu một số mô tả tệp bổ sung cho các bảng và tệp tạm thời.Đảm bảo rằng hệ điều hành của bạn có thể xử lý số lượng mô tả tệp mở được ngụ ý bởi cài đặt
mysql> SHOW GLOBAL STATUS LIKE 'Opened_tables';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| Opened_tables | 2741 |
+---------------+-------+
4. Nếu mysql> SHOW GLOBAL STATUS LIKE 'Opened_tables';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| Opened_tables | 2741 |
+---------------+-------+
4 được đặt quá cao, MySQL có thể hết các mô tả tệp và biểu hiện các triệu chứng như từ chối kết nối hoặc không thực hiện các truy vấn.Cũng có tính đến rằng công cụ lưu trữ
mysql> SHOW GLOBAL STATUS LIKE 'Opened_tables';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| Opened_tables | 2741 |
+---------------+-------+
3 cần hai mô tả tệp cho mỗi bảng mở duy nhất. Để tăng số lượng mô tả tệp có sẵn cho MySQL, hãy đặt biến hệ thống SHOW OPEN TABLES
3. Xem Phần & NBSP; B.3.2.16, Tệp không tìm thấy và các lỗi tương tự.Bộ nhớ cache của các bảng mở được giữ ở cấp độ của các mục
mysql> SHOW GLOBAL STATUS LIKE 'Opened_tables';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| Opened_tables | 2741 |
+---------------+-------+
4. Máy chủ tự động kích thước bộ đệm khi khởi động. Để đặt kích thước một cách rõ ràng, hãy đặt biến hệ thống mysql> SHOW GLOBAL STATUS LIKE 'Opened_tables';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| Opened_tables | 2741 |
+---------------+-------+
4 khi khởi động. MySQL có thể tạm thời mở nhiều bảng hơn thế này để thực hiện các truy vấn, như được mô tả sau trong phần này.MySQL đóng một bảng không sử dụng và xóa nó khỏi bộ đệm bảng trong các trường hợp sau:
Khi bộ đệm đầy và một luồng cố gắng mở một bảng không có trong bộ đệm.
Khi bộ đệm chứa nhiều hơn các mục
4 và bảng trong bộ đệm không còn được sử dụng bởi bất kỳ luồng nào.mysql> SHOW GLOBAL STATUS LIKE 'Opened_tables'; +---------------+-------+ | Variable_name | Value | +---------------+-------+ | Opened_tables | 2741 | +---------------+-------+
Khi một hoạt động Flushing xảy ra. Điều này xảy ra khi ai đó đưa ra câu lệnh
SHOW OPEN TABLES
7 hoặc thực thi lệnh flush mysqladmin hoặc lệnh làm mới mysqladmin.mysqladmin flush-tables or mysqladmin refresh command.
Khi bộ đệm bảng lấp đầy, máy chủ sử dụng quy trình sau để xác định vị trí mục nhập bộ đệm để sử dụng:
Các bảng hiện không được sử dụng được phát hành, bắt đầu với bảng ít được sử dụng gần đây.
Nếu một bảng mới phải được mở, nhưng bộ đệm đã đầy và không có bảng nào có thể được phát hành, bộ đệm tạm thời được mở rộng khi cần thiết. Khi bộ đệm ở trạng thái tạm thời được mở rộng và một bảng đi từ trạng thái được sử dụng đến không sử dụng, bảng được đóng và phát hành từ bộ đệm.
Một bảng
mysql> SHOW GLOBAL STATUS LIKE 'Opened_tables';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| Opened_tables | 2741 |
+---------------+-------+
3 được mở cho mỗi truy cập đồng thời. Điều này có nghĩa là bảng cần được mở hai lần nếu hai luồng truy cập cùng một bảng hoặc nếu một luồng truy cập bảng hai lần trong cùng một truy vấn [ví dụ: bằng cách kết hợp bảng vào chính nó]. Mỗi lần mở đồng thời yêu cầu một mục trong bộ đệm bảng. Mở đầu tiên của bất kỳ bảng mysql> SHOW GLOBAL STATUS LIKE 'Opened_tables';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| Opened_tables | 2741 |
+---------------+-------+
3 nào có hai mô tả tệp: một cho tệp dữ liệu và một cho tệp chỉ mục. Mỗi lần sử dụng bổ sung của bảng chỉ lấy một bộ mô tả tệp cho tệp dữ liệu. Bộ mô tả tệp chỉ mục được chia sẻ giữa tất cả các luồng. Nếu bạn đang mở một bảng với câu lệnh mở TEMPORARY
0, một đối tượng bảng chuyên dụng được phân bổ cho luồng. Đối tượng bảng này không được chia sẻ bởi các luồng khác và không được đóng cho đến khi luồng gọi TEMPORARY
0 đóng hoặc luồng kết thúc. Khi điều này xảy ra, bảng được đặt lại trong bộ đệm bảng [nếu bộ đệm không đầy]. Xem Phần & NBSP; 13.2.4, Tuyên bố của Hand Handler.
Để xác định xem bộ đệm bảng của bạn có quá nhỏ hay không, hãy kiểm tra biến trạng thái TEMPORARY
2, cho biết số lượng hoạt động mở bảng kể từ khi máy chủ bắt đầu:
mysql> SHOW GLOBAL STATUS LIKE 'Opened_tables';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| Opened_tables | 2741 |
+---------------+-------+
Nếu giá trị rất lớn hoặc tăng nhanh, ngay cả khi bạn chưa phát hành nhiều báo cáo TEMPORARY
3, hãy tăng giá trị
mysql> SHOW GLOBAL STATUS LIKE 'Opened_tables';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| Opened_tables | 2741 |
+---------------+-------+
4 khi khởi động máy chủ.