Đánh giá kết quả thực nghiệm

Một phần của tài liệu 28046_1712202001923481ThaoNguyen_toanvan1 (Trang 51 - 57)

6. Cấu trúc của luận văn

3.2.4. Đánh giá kết quả thực nghiệm

3.2.4.1. Chương trình sản phẩm

Chương trình sinh tự động mã nguồn trigger trên ngôn ngữ C phục vụ cập nhật gia tăng, đồng bộ các KNT với truy vấn lồng SQL được viết bằng ngôn ngữ C với giao diện Console.

Đầu vào được nhập trên luồng input chuẩn, bao gồm các thông tin:

- Truy vấn tạo KNT

- Đường dẫn thư mục chứa đầu ra

- Thông tin về cấu hình CSDL (host, cổng, tài khoản người dùng,…)

- Tên KNT

Sản phẩm đầu ra được đặt ở thư mục đã được chỉ định ở đầu vào, bao gồm:

- File ctrigger.h, thư viện chứa các macro và các hàm, thủ tục dùng chung cho tất cả các trigger. Phần lớn trong số này là các macro phục vụ kết nối CSDL, lưu trữ, xử lý dữ liệu được bắt bởi trigger.

- File mã nguồn (*.c), là file chứa mã nguồn trigger viết bằng ngôn ngữ C được sinh ra.

- File script (*.sql), là file chứa đoạn mã PL/PgSQL phục vụ tạo KNT và cài đặt các trigger lên các BG.

Hình 3.2 Giao diện chương trình sinh mã

Về mã nguồn sinh ra, xem phụ lục [2].

3.2.4.2. Đánh giá tốc độ cập nhật dữ liệu trên các BG có trigger cập nhật KNT

TVG đã được thay thế bằng câu lệnh select đơn giản truy vấn đến bảng KNT nên tốc độ thực hiện TVG xem như đạt đến mức tối đa. Tuy vậy, ở các BG, những trigger cập nhật gia tăng đồng bộ cho KNT làm cho thao tác cập nhật KNT trở thành một phần trong quá trình cập nhật dữ liệu trên BG, cho nên, thao tác cập nhật dữ liệu trên BG sẽ bị chậm đi tỉ lệ thuận với khối lượng dữ liệu trên các BG, độ phức tạp của TVG và số lượng KNT được sử dụng. Phần đánh giá này sẽ giúp ước lượng được phần nào thời gian bị chậm đi khi cập nhật dữ liệu trên BG có trigger cập nhật KNT.

Thử nghiệm nhằm đánh giá hiệu quả và ảnh hưởng của trigger được sinh ra, thực hiện trên máy tính cá nhân có cấu hình CPUcấu hình Intel G4600 4x3.6Ghz, Ram 8 GB, hệ điều hành Windows 10 64bit, HQT CSDL PostgreSQL 10 64bit. Sau khi tiến hành đo đạc thời gian thực thi truy vấn, các thao tác dữ liệu trong ba trường hợp: i) Không có KNT, ii) có KNT – trigger CNGT KNT theo thuật toán được trình bày trong mục 1.4.3.2.b. Thử nghiệm cho mỗi trường hợp i) và ii) trên các bản ghi ngẫu nhiên trong bản và tính giá trị trung bình, thu được kết quả so sánh như trên bảng 1 thông qua công cụ quản trị CSDL pgAdminIII

1.18.1. Mỗi thử nghiệm thao tác dữ liệu được thực hiện 20 lần và tính kết quả của các lần 11-20 với giả định thao tác chỉ sẽ được HQT CSDL thực thi “ổn định” sau một số thử nghiệm, cụ thể là 10.

➢ TVG:

SELECT sinh_vien.ma_sv, sinh_vien.ten_sv, sinh_vien.que_quan, lop.ma_lop, lop.ten_lop, khoa.ma_khoa,khoa.ten_khoa

FROM sinh_vien

JOIN lop ON sinh_vien.ma_lop = lop.ma_lop JOIN khoa ON lop.ma_khoa = khoa.ma_khoa

➢ Đánh giá thời gian thực thi câu lệnh Select:

Đối với các lệnhSelect: Thời gian thực thi khi không dùng KNT trung bình dao động từ 250-280 ms; thời gian thực thi khi có dùng KNT trung bình dao động từ 50-65ms.

Hình 3.4. Tốc độ thực thi lệnh Select 1000 row có dùng KNT

➢ Đánh giá thời gian thực thi các thao tác cập nhật trên BG:

Đối với các lệnh insert/delete (1 row): Thời gian thực thi khi không có trigger trung bình dao động từ 60-70 ms; thời gian thực thi khi có trigger cập nhật KNT trung bình dao động từ 70-85ms.

Hình 3.6. Tốc độ thực thi lệnh insert 1 row dùng câu lệnh trigger

Đối với các lệnh update (1 row): Thời gian thực thi khi không có trigger trung bình dao động từ 20-35 ms; thời gian thực thi khi có trigger cập nhật KNT trung bình dao động từ 50-60ms.

Hình 3.8. Tốc độ thực thi lệnh update 1 row có dùng câu lệnh trigger

Đối với các lệnh update (1000 row): Thời gian thực thi khi không có trigger trung bình dao động từ 290-330 ms; thời gian thực thi khi có trigger cập nhật KNT trung bình dao động từ 340-370 ms.

Hình 3.10. Tốc độ thực thi lệnh update 1000 row có dùng câu lệnh trigger

Qua các đánh giá trên cho thấy rõ sự hiệu quả của việc sử dụng KNT nếu truy vấn là đủ phức tạp trên lượng dữ liệu lớn, đặc biệt trong trường hợp tần suất sử dụng truy vấn là cao và tần suất cập nhật dữ liệu bằng các lệnh insert, update, delete là thấp thì hiệu quả sẽ được nhân lên gấp bội.

Một phần của tài liệu 28046_1712202001923481ThaoNguyen_toanvan1 (Trang 51 - 57)

Tải bản đầy đủ (PDF)

(92 trang)