Hướng dẫn rollback drop table mysql - rollback thả bảng mysql
13.1.37 & NBSP; Tuyên bố bảng cắt ngắn
3 làm trống hoàn toàn một bảng. Nó đòi hỏi đặc quyền 4. Về mặt logic, 5 tương tự như câu lệnh 6 xóa tất cả các hàng hoặc chuỗi các câu lệnh 7 và 8.Để đạt được hiệu suất cao, 5 bỏ qua phương pháp DML để xóa dữ liệu. Do đó, nó không khiến các yếu tố kích hoạt 0 bị bắn, nó không thể được thực hiện cho các bảng 1 với các mối quan hệ khóa nước ngoài của cha mẹ và con cái và nó không thể được quay lại như một hoạt động DML. Tuy nhiên, các hoạt động 5 trên các bảng sử dụng công cụ lưu trữ hỗ trợ DDL nguyên tử được cam kết hoặc quay lại hoàn toàn nếu máy chủ dừng trong quá trình hoạt động của chúng. Để biết thêm thông tin, xem Phần & NBSP; 13.1.1, Câu lệnh xác định dữ liệu nguyên tử hỗ trợ.Mặc dù 3 tương tự như 6, nhưng nó được phân loại là một câu lệnh DDL chứ không phải là câu lệnh DML. Nó khác với 6 theo những cách sau:
3 được coi là mục đích ghi nhật ký nhị phân và sao chép là DDL chứ không phải DML, và luôn được ghi lại như một tuyên bố.
3 Đối với một bảng đóng tất cả các trình xử lý cho bảng được mở bằng 0.Trong MySQL 5.7 trở lên, trên một hệ thống có nhóm đệm lớn và được bật 1, hoạt động 3 có thể gây ra hiệu suất hệ thống giảm tạm thời do quét LRU xảy ra khi xóa các mục nhập chỉ số băm thích ứng của bảng (Bug #68184). Việc ánh xạ lại của 5 thành 7 và 8 trong MySQL 8.0 tránh được quét LRU có vấn đề.
3 có thể được sử dụng với các bảng tóm tắt SCHEMA hiệu suất, nhưng hiệu ứng là đặt lại các cột tóm tắt thành 0 hoặc 7, không phải để loại bỏ các hàng. Xem Phần & NBSP; 27.12.20, Bảng tóm tắt Lược đồ hiệu suất.Cắt ngắn một bảng 1 nằm trong một không gian bảng cho mỗi bảng giảm không gian bảng hiện có và tạo một bảng mới. Kể từ MySQL 8.0.21, nếu không gian bảng được tạo bằng phiên bản trước đó và nằm trong thư mục không xác định, 1 sẽ tạo không gian bảng mới ở vị trí mặc định và ghi cảnh báo sau đây vào nhật ký lỗi: thư mục dữ liệu phải nằm trong một Thư mục đã biết. Vị trí thư mục dữ liệu sẽ bị bỏ qua và tệp sẽ được đưa vào vị trí Datadir mặc định. Các thư mục đã biết là những thư mục được xác định bởi các biến 0, 1 và 2. Để có 3 tạo không gian bảng ở vị trí hiện tại của nó, hãy thêm thư mục vào cài đặt 2 trước khi chạy 3.The DATA DIRECTORY location must be in a known directory. The DATA DIRECTORY location will be ignored and the file will be
put into the default datadir location. Known directories are those defined by the 0, 1, and 2 variables. To have
3 create the tablespace in its current location, add the directory to the 2 setting before running
3. 13.2.2 & NBSP; Xóa tuyên bố
6 là một câu lệnh DML loại bỏ các hàng khỏi bảng.Một câu lệnh 6 có thể bắt đầu với mệnh đề 8 để xác định các biểu thức bảng phổ biến có thể truy cập trong 6. Xem phần & nbsp; 13.2.17, với (biểu thức bảng phổ biến).Cú pháp bảng đơn
Câu lệnh 6 xóa các hàng từ 1 và trả về số lượng hàng bị xóa. Để kiểm tra số lượng hàng đã bị xóa, hãy gọi hàm 2 được mô tả trong Phần & NBSP; 12.16, các chức năng thông tin của Hồi giáo.Mệnh đề chínhCác điều kiện trong mệnh đề 3 tùy chọn xác định các hàng nào sẽ xóa. Không có mệnh đề 3, tất cả các hàng bị xóa.
5 là một biểu thức đánh giá đúng cho mỗi hàng sẽ bị xóa. Nó được chỉ định như được mô tả trong Phần & NBSP; 13.2.11, Tuyên bố chọn.Nếu mệnh đề 6 được chỉ định, các hàng sẽ bị xóa theo thứ tự được chỉ định. Điều khoản 7 đặt giới hạn về số lượng hàng có thể bị xóa. Các mệnh đề này áp dụng cho các xóa bảng đơn, nhưng không phải là xóa nhiều bảng.Cú pháp nhiều bàn
Đặc quyềnBạn cần đặc quyền 6 trên bảng để xóa các hàng khỏi nó. Bạn chỉ cần đặc quyền 9 cho bất kỳ cột nào chỉ được đọc, chẳng hạn như các cột được đặt tên trong mệnh đề 3.Màn biểu diễnKhi bạn không cần biết số lượng hàng bị xóa, câu lệnh 3 là một cách nhanh hơn để trống một bảng so với câu lệnh 6 không có mệnh đề 3. Không giống như 6, 3 không thể được sử dụng trong giao dịch hoặc nếu bạn có khóa trên bàn. Xem Phần & NBSP; 13.1.37, Tuyên bố bảng cắt ngắn và Phần & NBSP; 13.3.6, Bảng khóa và mở khóa Bảng câu lệnh.Tốc độ xóa các hoạt động cũng có thể bị ảnh hưởng bởi các yếu tố được thảo luận trong Phần & NBSP; 8.2.5.3, Tối ưu hóa các câu lệnh xóa. Để đảm bảo rằng một câu lệnh 6 đã cho không mất quá nhiều thời gian, mệnh đề 7 dành riêng cho MySQL cho 6 Chỉ định số lượng hàng tối đa bị xóa. Nếu số lượng hàng để xóa lớn hơn giới hạn, hãy lặp lại câu lệnh 6 cho đến khi số lượng hàng bị ảnh hưởng nhỏ hơn giá trị 7.SubqueriesBạn không thể xóa khỏi bảng và chọn từ cùng một bảng trong một truy vấn con. Hỗ trợ bảng phân vùng
6 Hỗ trợ lựa chọn phân vùng rõ ràng bằng mệnh đề 2, lấy danh sách các tên được phân tách bằng dấu phẩy của một hoặc nhiều phân vùng hoặc phân vùng (hoặc cả hai) để chọn các hàng bị bỏ. Các phân vùng không bao gồm trong danh sách bị bỏ qua. Đưa ra một bảng được phân vùng 3 với một phân vùng có tên 4, thực thi câu lệnh 5 có tác dụng tương tự trên bảng như thực thi 6; Trong cả hai trường hợp, tất cả các hàng trong phân vùng 4 đều bị loại bỏ.
2 có thể được sử dụng cùng với điều kiện 3, trong trường hợp đó điều kiện chỉ được kiểm tra trên các hàng trong các phân vùng được liệt kê. Ví dụ: 0 chỉ xóa các hàng từ phân vùng 4 mà điều kiện 2 là đúng; Hàng trong bất kỳ phân vùng nào khác không được kiểm tra và do đó không bị ảnh hưởng bởi 6.Điều khoản 2 cũng có thể được sử dụng trong các câu lệnh 6 nhiều bảng. Bạn có thể sử dụng tối đa một tùy chọn như vậy cho mỗi bảng có tên trong tùy chọn 6.Để biết thêm thông tin và ví dụ, xem Phần & NBSP; 24.5, Lựa chọn phân vùng. Cột tự độngNếu bạn xóa hàng chứa giá trị tối đa cho cột 1, giá trị không được sử dụng lại cho bảng 2 hoặc 1. Nếu bạn xóa tất cả các hàng trong bảng với xóa từ 1 (không có mệnh đề 3) trong chế độ 02, chuỗi bắt đầu lại cho tất cả các công cụ lưu trữ ngoại trừ 1 và 2. Có một số ngoại lệ đối với hành vi này đối với các bảng 1, như đã thảo luận trong Phần & NBSP; 15.6.1.6, Xử lý Auto_increment trong Innodb.DELETE
FROM (without a 3 clause) in
02 mode, the sequence starts over for all storage engines except 1 and 2. There are some exceptions to this behavior for 1 tables, as discussed in Section 15.6.1.6, “AUTO_INCREMENT Handling in
InnoDB”. Đối với các bảng 2, bạn có thể chỉ định cột thứ cấp 1 trong phím nhiều cột. Trong trường hợp này, việc tái sử dụng các giá trị bị xóa khỏi đầu chuỗi xảy ra ngay cả đối với các bảng 2. Xem Phần & NBSP; 3.6.9, Sử dụng Auto_increment.Sửa đổiCâu lệnh 6 hỗ trợ các công cụ sửa đổi sau:
Thứ tự xóaNếu câu lệnh 6 bao gồm mệnh đề 6, các hàng sẽ bị xóa theo thứ tự được chỉ định bởi mệnh đề. Điều này hữu ích chủ yếu kết hợp với 7. Ví dụ: câu lệnh sau đây tìm thấy các hàng khớp với mệnh đề 3, sắp xếp chúng bằng 23 và xóa cái đầu tiên (lâu đời nhất):
6 cũng giúp xóa các hàng theo thứ tự cần thiết để tránh vi phạm toàn vẹn tham chiếu.Bàn innodbNếu bạn đang xóa nhiều hàng từ một bảng lớn, bạn có thể vượt quá kích thước bảng khóa cho bảng 1. Để tránh vấn đề này, hoặc đơn giản là để giảm thiểu thời gian mà bảng vẫn bị khóa, chiến lược sau (hoàn toàn không sử dụng 6) có thể hữu ích:
Không có phiên nào khác có thể truy cập các bảng liên quan trong khi 27 thực thi, vì vậy hoạt động đổi tên không phải chịu các vấn đề đồng thời. Xem Phần & NBSP; 13.1.36, Tuyên bố Đổi tên Bảng.Bàn myisamTrong các bảng 2, các hàng bị xóa được duy trì trong danh sách được liên kết và các hoạt động 30 tiếp theo tái sử dụng các vị trí hàng cũ. Để đòi lại không gian không sử dụng và giảm kích thước tệp, hãy sử dụng câu lệnh 31 hoặc tiện ích Myisamchk để sắp xếp lại các bảng. 31 dễ sử dụng hơn, nhưng Myisamchk nhanh hơn. Xem phần & nbsp; 13.7.3.4, Tối ưu hóa bảng câu lệnh bảng, và phần & nbsp; 4.6.4, Myisamchk-tiện ích bảo trì bảng myisam.myisamchk utility to reorganize tables. 31 is easier to use, but
myisamchk is faster. See Section 13.7.3.4, “OPTIMIZE TABLE Statement”, and Section 4.6.4, “myisamchk — MyISAM Table-Maintenance Utility”. Công cụ sửa đổi 16 có ảnh hưởng đến việc liệu lá chỉ mục được hợp nhất để xóa các hoạt động hay không. 34 hữu ích nhất cho các ứng dụng trong đó các giá trị chỉ mục cho các hàng bị xóa được thay thế bằng các giá trị chỉ mục tương tự từ các hàng được chèn vào sau. Trong trường hợp này, các lỗ hổng còn lại bởi các giá trị bị xóa được sử dụng lại. 34 không hữu ích khi các giá trị bị xóa dẫn đến các khối chỉ mục bị thiếu hụt một loạt các giá trị chỉ mục mà các chèn mới lại xảy ra. Trong trường hợp này, việc sử dụng 16 có thể dẫn đến không gian lãng phí trong chỉ số vẫn chưa được báo cáo. Dưới đây là một ví dụ về một kịch bản như vậy:
Trong kịch bản này, các khối chỉ mục được liên kết với các giá trị chỉ mục đã bị xóa trở nên thiếu hụt nhưng không được hợp nhất với các khối chỉ mục khác do sử dụng 16. Chúng vẫn bị thiếu khi chèn mới xảy ra, bởi vì các hàng mới không có giá trị chỉ mục trong phạm vi bị xóa. Hơn nữa, chúng vẫn được lấp đầy ngay cả khi sau này bạn sử dụng 6 mà không cần 16, trừ khi một số giá trị chỉ số bị xóa xảy ra trong các khối chỉ mục trong hoặc liền kề với các khối bị thiếu. Để đòi lại không gian chỉ mục không sử dụng trong những trường hợp này, hãy sử dụng 31.Nếu bạn định xóa nhiều hàng từ một bảng, có thể sử dụng 34 nhanh hơn, sau đó là 31. Điều này xây dựng lại chỉ mục thay vì thực hiện nhiều hoạt động hợp nhất khối chỉ mục.Xóa đa bànBạn có thể chỉ định nhiều bảng trong câu lệnh 6 để xóa các hàng khỏi một hoặc nhiều bảng tùy thuộc vào điều kiện trong mệnh đề 3. Bạn không thể sử dụng 47 hoặc 7 trong 6 nhiều bảng. Điều khoản 50 liệt kê các bảng liên quan đến tham gia, như được mô tả trong Phần & NBSP; 13.2.11.2, Điều khoản tham gia.Đối với cú pháp nhiều bảng đầu tiên, chỉ các hàng khớp từ các bảng được liệt kê trước mệnh đề 6 bị xóa. Đối với cú pháp nhiều bảng thứ hai, chỉ khớp các hàng từ các bảng được liệt kê trong mệnh đề 6 (trước mệnh đề 53) bị xóa. Hiệu ứng là bạn có thể xóa các hàng từ nhiều bảng cùng một lúc và có thêm các bảng chỉ được sử dụng để tìm kiếm:
Hoặc:
Các câu lệnh này sử dụng cả ba bảng khi tìm kiếm các hàng để xóa, nhưng chỉ xóa các hàng khớp chỉ từ các bảng 54 và 55.Các ví dụ trước sử dụng 56, nhưng các câu lệnh 6 nhiều bảng có thể sử dụng các loại tham gia khác được phép trong các câu lệnh 9, chẳng hạn như 59. Ví dụ: để xóa các hàng tồn tại trong 54 không phù hợp trong 55, sử dụng 59:
Cú pháp cho phép 63 sau mỗi 1 để tương thích với quyền truy cập.Access. Nếu bạn sử dụng câu lệnh 6 nhiều bảng liên quan đến các bảng 1 có các ràng buộc chính của nước ngoài, trình tối ưu hóa MySQL có thể xử lý các bảng theo thứ tự khác với mối quan hệ cha mẹ/trẻ em của họ. Trong trường hợp này, tuyên bố thất bại và quay trở lại. Thay vào đó, bạn nên xóa khỏi một bảng duy nhất và dựa vào các khả năng 0 mà 1 cung cấp để khiến các bảng khác được sửa đổi phù hợp.Ghi chú Nếu bạn khai báo bí danh cho một bảng, bạn phải sử dụng bí danh khi đề cập đến bảng: 0Bí danh bảng trong một bảng nhiều bảng 6 chỉ nên được khai báo trong phần 50 của câu lệnh. Ở những nơi khác, tài liệu tham khảo bí danh được cho phép nhưng không phải là khai báo bí danh.Chính xác: 1Không đúng: 2Bí danh bảng cũng được hỗ trợ cho các câu lệnh 6 bắt đầu bằng MySQL 8.0.16. (Lỗi #89410, lỗi #27455809) |