- vừa được xem lúc

Mẹo tạo số lượng lớn dữ liệu trong SQL để performance test

0 0 16

Người đăng: LDT

Theo Viblo Asia

Đây là vấn đề mình gặp trong quá trình làm việc, viết vào đây vừa để note lại cho bản thân, vừa chia sẻ với mọi người.

Trong quá trình làm việc với cơ sở dữ liệu, thì thoảng mình cần phải test performance để thực hiện query để kiểm tra thời gian thực thi các câu lệch và tìm cách tối ưu chúng. Thông thường có 1 vài cách để thực hiện:

  1. Tạo bằng tay thao tác trên các SQL tools, hay viết các lệch sql và chạy -> Cái này chỉ tạo được số lượng rất nhỏ.
  2. Tìm trên mạng các database được chia sẻ -> Mình đã thử tìm, thường số lượng không quá lớn, cấu trúc dữ liệu không được như mong muốn.
  3. Viết service tương tác với database và gọi lệnh để insert -> Tốn thời gian, phức tạp, yêu cầu biết code 1 số language (Java, php, js..)

Các bạn hay ngừng lại 5 phút suy nghĩ xem có phương pháp nào đơn giản và hiệu quả hơn không?

Vấn đề

Theo ý kiến cá nhân và trải nghiệm của mình, trong phương pháp trên, mình thấy phương pháp số 3 là đạt được yêu cầu nhưng hơi phức tạp.

Giải pháp

Mình tìm thấy rằng chúng ta có thể dùng stored procedure để hỗ trợ việc này, Cách sử dụng thì khá đơn giản, các bạn có thể xem link tham khảo.

Ví dụ mình cần insert dữ liệu vào bảng users

INSERT INTO test.users (created_date, updated_date) VALUES (DEFAULT, DEFAULT);

Thì mình sẽ tạo 1 stored procedure như bên dưới. Bên trong có 1 vòng lặp, chúng ta có thể khai báo con số bản ghi chúng ta mong muốn.

DELIMITER //
CREATE or replace PROCEDURE AutoInsertValuesToTable()
BEGIN DECLARE startingRange INT DEFAULT 10; WHILE startingRange <= 20000 DO INSERT INTO test.users (created_date, updated_date) VALUES (DEFAULT, DEFAULT); SET startingRange = startingRange + 1; END WHILE;
END // DELIMITER ;

và thực hiện lời gọi SQL

call AutoInsertValuesToTable();

Cá nhân mình rất thích dùng cách này, mặc dù vẫn mất thời gian, chờ đợi cho các lệnh, trong thời gian này chúng ta có thể đi làm việc khác và chờ đợi kết quả.

Kết luận

Đây là cách mà mình vẫn dùng để generate dữ liệu để phục vụ quá trình nghiên cứu bản thân, Nếu mọi người có cách nào hay có thể chia sẻ bên dưới comment.

Link tham khảo

https://www.sqlshack.com/learn-mysql-the-basics-of-mysql-stored-procedures/ https://www.digitalocean.com/community/tutorials/how-to-use-stored-procedures-in-mysql

Bình luận

Bài viết tương tự

- vừa được xem lúc

Giới thiệu Stored Procedure trong SQL Server

Stored Procedure là 1 phần không thể thiếu của SQL Server. Chúng có thể hỗ trợ rất nhiều cho lập trình và cấu hình cơ sở dữ liệu.

0 0 134

- vừa được xem lúc

sử dụng index trong sql query

Index là một trong những yếu tố quan trọng nhất góp phần vào việc nâng cao hiệu suất của cơ sở dữ liệu. Index trong SQL tăng tốc độ của quá trình truy vấn dữ liệu bằng cách cung cấp phương pháp truy xuất nhanh chóng tới các dòng trong các bảng, tương tự như cách mà mục lục của một cuốn sách giúp bạn

0 0 178

- vừa được xem lúc

Hướng dẫn sửa lỗi không cài được SQL Server

Hôm qua do yêu cầu môn học, mình có cài lại Microsoft SQL Server. Trước đó mình có cài rồi, nhưng rồi lâu không dùng nên gỡ ra cho nhẹ máy. Bây giờ có dịp cần nên mình mới cài lại. Chi tiết lỗi mình gặp phải.

0 0 120

- vừa được xem lúc

Bạn nên tránh sử dụng Soft Delete khi có thể, và đây là lý do tại sao

Con người luôn luôn mắc sai lầm. Vì vậy, việc "lo xa" trước mọi tình huống xấu nhất chưa bao giờ là thừa.

0 0 126

- vừa được xem lúc

Sử dụng trigger trong SQL qua ví dụ cơ bản.

Trigger là gì . Cú pháp của Trigger. CREATE TRIGGER tên_trigger ON tên_bảng. FOR {DELETE, INSERT, UPDATE}.

0 0 149

- vừa được xem lúc

Khác biệt giữa khóa chính và khóa ngoại trong SQL

Các khoá chính và khóa ngoại là hai loại ràng buộc có thể được sử dụng để thực thi toàn vẹn dữ liệu trong các bảng SQL Server và đây là những đối tượng cơ sở dữ liệu quan trọng. Trong bài này, tôi muố

0 0 131