Thứ Sáu, Tháng 2 14, 2025
Google search engine
Homelinuxchống vi-rútTối ưu hóa DSPAM + MySQL 4.1

Tối ưu hóa DSPAM + MySQL 4.1

Tối ưu hóa DSPAM + MySQL 4.1

Giới thiệu

DSPAM là một bộ lọc thư rác dựa trên nội dung mã nguồn mở và có thể mở rộng được thiết kế cho các hệ thống doanh nghiệp nhiều người dùng. Nó rất tốt trong việc lọc thư rác nhưng trên những máy chủ thư bận rộn, việc cắt tỉa cơ sở dữ liệu MySQL mất quá nhiều thời gian …

Tập lệnh purge-4.1.sql mặc định được cung cấp với DSPAM có thể được tối ưu hóa rất nhiều bằng cách thêm các chỉ mục vào cơ sở dữ liệu và sử dụng các chỉ mục đúng cách khi lược bớt.

Hãy bắt đầu bằng cách thêm một số chỉ mục trên bảng dspam_token_data . Việc thêm các INDEX và sử dụng các chỉ mục một cách chính xác cho phép chúng tôi truy vấn các cơ sở cực kỳ nhanh chóng.

Cấu trúc bảng và tập lệnh mặc định được cung cấp với DSPAM gây ra việc quét toàn bộ bảng vì dữ liệu không được lập chỉ mục hoặc các chỉ mục không được sử dụng đúng cách.

Thêm chỉ mục

Để bắt đầu, chúng ta cần thêm một số chỉ mục vào các bảng. Các chỉ mục cho phép chúng tôi truy vấn cơ sở dữ liệu của bạn nhanh hơn nhiều vì chúng tôi không phải quét toàn bộ bảng. (Cơ sở dữ liệu DSPAM hiện tại của chúng tôi có kích thước 8,5G và việc quét toàn bộ bảng theo đúng nghĩa đen đưa toàn bộ máy chủ thư đến trạng thái đứng yên.)

Kết nối với máy chủ cơ sở dữ liệu và đưa ra các lệnh sau:

mysql> thay đổi bảng dspam_token_data thêm chỉ mục (spam_hits);
mysql> thay đổi bảng dspam_token_data thêm chỉ mục (vô tội_hits);
mysql> thay đổi bảng dspam_token_data thêm chỉ mục (last_hit);

Thao tác này sẽ thêm chỉ mục vào các cột spam_hits , secure_hitslast_hit .

Bảng dspam_signature_data đã được lập chỉ mục đúng cách – tuy nhiên, các chỉ mục này không được sử dụng đúng cách khi xóa dữ liệu cũ (thêm về điều này bên dưới).

Các phần thú vị của tập lệnh được cung cấp với DSPAM như sau:

xóa khỏi dspam_token_data
where (blank_hits * 2) + spam_hits <5
và @ a-to_days (last_hit)> 60;

Truy vấn này không sử dụng chỉ mục trên cột last_hit vì chúng ta gọi hàm to_days trên trường và do đó mất khả năng sử dụng chỉ mục.

Cũng lưu ý rằng các chỉ mục bổ sung được thêm vào trên secure_hitsspam_hits được sử dụng ở đây. Thay đổi truy vấn thành:

xóa khỏi dspam_token_data
where (blank_hits * 2) + spam_hits <5
và from_days (@ a-60)> last_hit;

Truy vấn tiếp theo:

xóa khỏi dspam_token_data
trong đó blank_hits = 1 và spam_hits = 0
và @ a-to_days (last_hit)> 15;

Vấn đề tương tự – thay đổi điều này thành:

xóa khỏi dspam_token_data
trong đó blank_hits = 1 và spam_hits = 0
và from_days (@ a-15)> last_hit;

Truy vấn tiếp theo:

xóa khỏi dspam_token_data
trong đó blank_hits = 0 và spam_hits = 1
và @ a-to_days (last_hit)> 15;

Thay đổi điều này thành:

xóa khỏi dspam_token_data
trong đó blank_hits = 0 và spam_hits = 1
và from_days (@ a-15)> last_hit;

Truy vấn tiếp theo:

xóa khỏi dspam_token_data
SỬ DỤNG
dspam_token_data TRÁI THAM GIA dspam_preferences
ON dspam_token_data.uid = dspam_preferences.uid
AND dspam_preferences.preference = ‘trainingMode’
AND dspam_preferences.value trong (‘TOE’, ‘TUM’, ‘NOTRAIN’)
WHERE @ a-to_days (dspam_token_data.last_hit)> 90
AND dspam_preferences.uid LÀ KHÔNG;

Thay đổi điều này thành:

xóa khỏi dspam_token_data
SỬ DỤNG
dspam_token_data TRÁI THAM GIA dspam_preferences
ON dspam_token_data.uid = dspam_preferences.uid
AND dspam_preferences.preference = ‘trainingMode’
AND dspam_preferences.value trong (‘TOE’, ‘TUM’, ‘NOTRAIN’)
WHERE from_days (@ a-90)> dspam_token_data.last_hit
AND dspam_preferences.uid LÀ KHÔNG;

Truy vấn tiếp theo:

xóa khỏi dspam_token_data
SỬ DỤNG
dspam_token_data TRÁI THAM GIA dspam_preferences
ON dspam_token_data.uid = dspam_preferences.uid
AND dspam_preferences.preference = ‘trainingMode’
AND dspam_preferences.value = ‘TUM’
WHERE @ a-to_days (dspam_token_data.last_hit)> 90
VÀ vô tội_hits + spam_hits <50
AND dspam_preferences.uid KHÔNG ĐẦY ĐỦ;

Thay đổi điều này thành:

xóa khỏi dspam_token_data
SỬ DỤNG
dspam_token_data TRÁI THAM GIA dspam_preferences
ON dspam_token_data.uid = dspam_preferences.uid
AND dspam_preferences.preference = ‘trainingMode’
AND dspam_preferences.value = ‘TUM’
WHERE from_days (@ a-90)> dspam_token_data.last_hit
VÀ vô tội_hits + spam_hits <50
AND dspam_preferences.uid KHÔNG ĐẦY ĐỦ;

Và cuối cùng:

xóa khỏi dspam_signature_data
where @ a-14> to_days (create_on);

nên được đổi thành:

xóa khỏi dspam_signature_data
where from_days (@ a-14)> create_on;

Chạy thử với tập lệnh sơ lược đã thay đổi

Vậy những thay đổi có giúp ích gì không? Đúng! Dưới đây là thời gian cho tập lệnh cũ chưa sửa đổi và tập lệnh mới được sửa đổi:

thực 2m57,726 giây
người dùng 0m0.010s
sys 0m0.000s

Và đối với tập lệnh được sửa đổi mới (được sử dụng trên cùng một tập dữ liệu):

thực 0m1.794s
người dùng 0m0.000s
sys 0m0.000s

Tập lệnh sử dụng gần 3 phút bằng tập lệnh DSPAM mặc định và ít hơn 2 giây bằng tập lệnh và chỉ mục đã thay đổi.

Ưu và nhược điểm Quảng cáo

Khi thêm chỉ mục vào bảng, bạn sử dụng nhiều không gian đĩa hơn cho dữ liệu của mình. Nếu bạn cần hiệu suất khi lược bớt dữ liệu và có thể đủ khả năng sử dụng thêm dung lượng đĩa, hãy thêm các chỉ mục và thay đổi tập lệnh lược bớt của bạn như đã giải thích ở trên. Nếu bạn chỉ có một lượng nhỏ dữ liệu trong cơ sở dữ liệu của mình và hiệu suất không phải là vấn đề thì hãy sử dụng tập lệnh DSPAM mặc định.

Liên kết

  • Trang chủ DSPAM

Nhận xét

Tất cả các phản hồi đều được đánh giá cao – vui lòng liên hệ với tôi qua email: laursen [at] netgroup.dk

RELATED ARTICLES

LEAVE A REPLY

Please enter your comment!
Please enter your name here

- Advertisment -
Google search engine

Most Popular

Recent Comments