Mysql lưu trữ dữ liệu từ bảng này sang bảng khác

Trong các hoạt động hàng ngày của DBA, chúng tôi đang thực hiện thao tác Lưu trữ trên các máy chủ cơ sở dữ liệu xuyên quốc gia của mình để cải thiện các truy vấn của bạn và kiểm soát Dung lượng ổ đĩa. Lưu trữ là hoạt động tốn kém nhất vì nó liên quan đến một số lượng lớn Đọc và Viết sẽ được thực hiện. Vì vậy, bắt buộc phải chạy các truy vấn lưu trữ theo khối. Bản lưu trữ phụ thuộc vào việc sử dụng của doanh nghiệp. Nhiều người trong chúng ta cần một bản sao dữ liệu trên cơ sở dữ liệu lưu trữ để tham khảo sau này. Để thực hiện lưu trữ, chúng ta chỉ cần chạy truy vấn xóa với giới hạn. Nhưng chúng ta cần chạy đi chạy lại truy vấn cho đến khi số lượng hàng phù hợp bằng 0. Chúng ta có thể tạo một thủ tục để thực hiện điều này trong vòng lặp while. Tôi đã tạo một thủ tục như vậy để lưu trữ nhiều bảng.  

Nguồn hình ảnh. Brent Ozar không giới hạn

Tại sao Lưu trữ là một hoạt động tốn kém?

Nói chung, cách chúng tôi sắp xếp dữ liệu là xóa khỏi tên_bảng trong đó tên_cột 0 do SET autocommit=1; DELETE FROM test WHERE dop < DATE[Date_sub[Now[], INTERVAL 10 day]] LIMIT 10000; SET rows = row_count[]; select sleep[1]; commit; END WHILE; END // delimiter ;

Lưu trữ nhiều bảng. #

Quy trình này sẽ giúp bạn lưu trữ nhiều bảng, bạn chỉ cần chuyển tên bảng, tên cột và ngày cho bản lưu trữ. Tôi thích sử dụng cái này

use sqladmin;

DROP PROCEDURE
IF EXISTS sqladmin_archive;
delimiter //
  CREATE PROCEDURE
    sqladmin_archive[IN archive_dbname varchar[100], IN archive_table varchar[100], IN archive_column varchar[100], IN archive_date varchar[100]]

  begin
    DECLARE rows INT;
    DECLARE rows_deleted INT;
    SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED;
    SET rows = 1;
    SET rows_deleted = 10000;
    WHILE rows > 0
        do
        SET autocommit=1;
        SET @query =CONCAT['DELETE FROM   ',archive_dbname,'.',archive_table,' WHERE  ',archive_column,' 

Chủ Đề