Bắt đầu bằng cách xem xét partition
nhập bảng của bạn nếu bạn chưa:
http://dev.mysql.com/doc/refman/5.1 /en/partitioning.html
http://www.slideshare.net/datacharmer/mysql-partitions-tutorial
Bạn đang 'hợp nhất' dữ liệu của mình như thế nào? Có thể phương pháp bạn đang sử dụng không tối ưu. Một cách tiếp cận tốt (hãy cho tôi biết nếu đây thực sự là những gì bạn đang làm) là tạo một bảng chứa dữ liệu tổng hợp. Sau đó, thiết lập nó theo cách này:
Trước tiên, hãy gạt cách dữ liệu được đưa vào bảng chính của bạn ...
-
Tạo một công việc (cron hoặc bất cứ thứ gì bạn có thể có sẵn hoặc đã được định cấu hình) chạy ở một khoảng thời gian xác định, liên quan đến cách dữ liệu được tải vào bảng chính (chúng ta hãy gọi nó là
MAIN
, tiến về phía trước). Nếu bảng CHÍNH của bạn được tải hàng giờ, hãy đồng bộ hóa nó. Nửa giờ? Không thành vấn đề. Bạn vẫn có thể kiểm tra tốc độ hoặc nếu gần giờ thấp điểm mà báo cáo của bạn chạy, thì hãy lập lịch gần thời điểm đó -
Lập chỉ mục bảng của bạn một cách thích hợp để có dữ liệu tổng hợp. Hãy gọi nó là
AGG
tiến về phía trước. -
Tạo một thủ tục được lưu trữ để tải dữ liệu từ MAIN đến AGG, về cơ bản là một
AGG LOAD FOR INTERVAL-?
. Tất nhiên, bạn là người duy nhất ở đây biết cách thức hoặc thời điểm dữ liệu được chèn vào MAIN, vì vậy bạn cũng sẽ là người biết ý định tổng hợp là gì. Cũng có thể tiếp tục chạy quy trình tổng hợp được lưu trữ nếu ý định tổng hợp chưa được hoàn thành (giả sử nó trong cả ngày .. vì vậy, nó là một lần chạy tích lũy cho đến khi điều đó được thiết lập) -
Sử dụng
STAGING
những cái bàn. Đối với tôi, chúng là tốt nhất . -
Tạo một thủ tục được lưu trữ để kiểm tra lại dữ liệu, để mọi bản cập nhật hoặc chèn thêm các bản ghi có thể được phản ánh trong bảng AGG bằng cách chạy thủ tục này. Bao gồm các tham số cho phạm vi để cập nhật. Nếu đó là hàng ngày, thì bạn có
DAILY AGG LOAD
vàDAILY AGG RELOAD
thủ tục. Bao gồm mộtAGG CHECK INTERVAL
vàAGG CHECK DAILY
thủ tục này sẽ giúp bạn ngủ ngon vào ban đêm. Ồ và chưa kể đếnAGG DATA HOLE CHECK
hoặcMISSING AGG DATA CHECK
và áp dụng các quy tắc nghiệp vụ triển khai việc kiểm tra lượng dữ liệu tối thiểu bắt buộc mà bạn có thể nhận được từ bảng tổng hợp hoặc từ bảng chính hoặc bảng dàn (tốt hơn là) -
Tất nhiên, không bao giờ sửa đổi
AGG
bàn. Luôn chỉ tải lại nó. -
Làm thế nào để giúp đỡ? Sau đó, bạn sẽ không chỉ cần các báo cáo của mình truy vấn
AGG
bảng nào nhỏ hơn và nhanh hơn (vì quá trình tổng hợp đã được thực hiện)? Có thể vấn đề hiệu suất đi kèm với việc tải theo khoảng thời gian, nhưng nếu bạn cấu trúc bảng, các chỉ mục của nó và bảo trì bảng đúng cách, thì nó sẽ đáng giá. -
Phân vùng đi vào đâu? Đang lưu trữ. Sau khi một thời gian nhất định trôi qua (thảo luận về những gì có thể chấp nhận được với nhóm của bạn / sếp / người đứng đầu), bạn có thể lưu trữ dữ liệu cũ từ
MAIN
. Tôi đã trải nghiệm việc phải giữ dữ liệu trị giá 1 năm trong cơ sở dữ liệu sản xuất. Điều đó giống như một lực cản, nhưng vì đó là yêu cầu của khách hàng, công ty không có lựa chọn nào khác ngoài việc cung cấp cho tôi dung lượng đĩa mà tôi cần (xoa tay) và cậu bé đã chơi đùa với nó cho đến khi tôi có thứ gì đó hoạt động tốt. Tôi phải đề cập rằng trải nghiệm của tôi với Microsoft SQL Server 2005 và các thủ tục được lưu trữ và SSIS đã làm cho nó trở nên thú vị.
Đây là tất cả nếu bạn chưa biết, và đối với những người khác có thể muốn xem xét các lựa chọn. Tôi không nói rằng bạn chưa biết bất kỳ điều nào ở trên; Tôi chỉ nói rõ những gì tôi có thể làm trước đây - xem xét rằng tôi không có thêm thông tin để làm việc với bài đăng của bạn, ngoại trừ việc bạn có một quy trình hợp nhất mà bạn đã thử ..