2010-03-25 45 views
6

Tôi có một cơ sở dữ liệu sản xuất nơi thống kê sử dụng cư trú. Cơ sở dữ liệu này chịu trách nhiệm cho nhiều thứ khác (không chỉ số liệu thống kê calcs). Tôi sử dụng php để định kỳ cuộn lên các độ phân giải khác nhau (ngày, tuần, tháng, năm) của các thống kê thú vị trong các thùng được quyết định bởi độ phân giải.Ưu tiên kết nối cơ sở dữ liệu PHP/MySQL?

Ứng dụng php tôi đã viết "hoàn thành" dữ liệu của nó khi chạy, sao cho nó sẽ tính toán tất cả các thống kê cuộn lên cho các độ phân giải và khoảng thời gian kể từ lần chạy cuối cùng. Điều này rất hữu ích nếu chúng ta muốn tắt tính năng này để gỡ rối các vấn đề hiệu suất cơ sở dữ liệu, vì tôi có thể bật lại và hoàn thành bộ dữ liệu độc lập với tần suất chạy tập lệnh (công việc cron có thể được chuyển từ hàng ngày sang hàng tuần, vv).

Vấn đề tôi có, là các tính toán khá chuyên sâu và thúc đẩy QPS của máy chủ cơ sở dữ liệu sản xuất. Có cách nào để thiết lập một "ưu tiên" trên một kết nối cơ sở dữ liệu cụ thể để nó sẽ chỉ sử dụng "off-cycle" để thực hiện các tính toán này?

Có lẽ một phản ứng thích hợp sẽ là sao chép các bảng mà tôi đang làm việc vào một cơ sở dữ liệu thống kê khác, nhưng tiếc là tôi không có tài nguyên để thử một thứ như vậy.

Cảm ơn trước sự giúp đỡ nào, Josh

+0

Tôi có cùng một vấn đề chính xác! – camdixon

Trả lời

5

low_priority_updates nên làm chính xác những gì bạn cần.

+0

Tò mò cách thức hoạt động này ... "Nếu được đặt thành 1, tất cả các câu lệnh INSERT, UPDATE, DELETE và LOCK TABLE WRITE chờ cho đến khi không có SELECT hoặc LOCK TABLE READ đang chờ xử lý trên bảng bị ảnh hưởng". Điều này có vẻ là cài đặt máy chủ? Nó không có vẻ thích hợp, bởi vì tôi không muốn TẤT CẢ chèn, cập nhật, xóa bị ảnh hưởng (cơ sở dữ liệu sản xuất của nó làm nhiều việc khác). trên thực tế, tôi muốn TẤT CẢ các truy vấn được phát hành bởi kết nối này để được ưu tiên thấp (thậm chí chọn, vv) – Josh

+2

Tài liệu nói "Phạm vi biến đổi: Cả hai" nghĩa là bạn có thể đặt nó trên toàn cầu mà còn chỉ cho phiên/kết nối. Và nó được đánh dấu là "động: có", do đó, hãy áp dụng http://dev.mysql.com/doc/refman/5.0/en/dynamic-system-variables.html. – VolkerK

+0

Cảm ơn những người bảo trợ - Tôi đã bỏ phiếu cho câu trả lời. Tuy nhiên, bản chất của các truy vấn chuyên sâu là chọn avg() và chọn max() trên các tập dữ liệu lớn, cũng như nhiều lựa chọn nhỏ trên các miền thời gian nhỏ. nó không thực sự chèn, cập nhật, và xóa rằng tôi đang lo lắng về mỗi se (họ đang ở trên một bảng mà không có tương tác với sản phẩm và do đó, khóa không xâm nhập). tôi đã lo lắng hơn về tối đa I/O hoặc nghiền bộ vi xử lý vì phân loại vv Tôi không chắc chắn có một mục đích chung để chỉ đơn giản là sử dụng db khi nó không sử dụng, trừ khi tôi đã bỏ lỡ một cái gì đó. – Josh

Các vấn đề liên quan