Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

bảng và báo cáo mysql rất lớn

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

http ://blog.mayflower.de/archives/353-Is-MySQL-partitioning-useful-for-very-big-real-life-problems.html

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 LOADDAILY AGG RELOAD thủ tục. Bao gồm một AGG CHECK INTERVALAGG CHECK DAILY thủ tục này sẽ giúp bạn ngủ ngon vào ban đêm. Ồ và chưa kể đến AGG DATA HOLE CHECK hoặc MISSING 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ử ..




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tên bảng chữ thường MySQL trong Windows Tên chữ hoa trên Unix

  2. Mô-đun Python MySQL

  3. phương pháp tiêu chuẩn để nhận thông báo từ cơ sở dữ liệu về sự thay đổi / chèn

  4. câu lệnh sắp xếp và xếp hạng mysql

  5. Lỗi Keyerror 255 khi thực thi pymysql.connect