2008-10-28 12 views
29

Tôi tìm thấy a posting on the MySQL forums from 2005, nhưng không có gì gần đây hơn. Dựa trên điều đó, điều đó là không thể. Nhưng rất nhiều có thể thay đổi trong 3-4 năm.Có thể có chế độ xem được lập chỉ mục trong MySQL không?

Điều tôi đang tìm là cách để có chỉ mục trên một chế độ xem nhưng có bảng được xem vẫn chưa được lập chỉ mục. Lập chỉ mục làm tổn thương quá trình viết và bảng này được viết khá thường xuyên (đến mức mà việc lập chỉ mục làm chậm mọi thứ đến một lần thu thập dữ liệu). Tuy nhiên, việc thiếu chỉ mục này làm cho các truy vấn của tôi đau đớn chậm.

+0

Xem http://stackoverflow.com/q/7922675/632951 – Pacerier

Trả lời

28

Tôi không nghĩ rằng MySQL hỗ trợ chế độ xem vật chất là những gì bạn cần, nhưng nó sẽ không giúp bạn trong tình huống này. Cho dù chỉ mục nằm trên khung nhìn hay trên bảng bên dưới, nó sẽ cần phải được viết và cập nhật tại một thời điểm nào đó trong khi cập nhật bảng bên dưới, do đó nó vẫn gây ra các vấn đề tốc độ ghi.

Đặt cược tốt nhất của bạn có thể là tạo bảng tóm tắt được cập nhật định kỳ.

+1

Cảm ơn. Tôi đã làm một số tìm kiếm nhiều hơn trên quan điểm vật hoá, và có vẻ như bạn là chính xác. –

7

Bạn đã xem xét tóm tắt dữ liệu xử lý giao dịch của mình từ dữ liệu xử lý phân tích để cả hai có thể chuyên đáp ứng các yêu cầu duy nhất của chúng?

Ý tưởng cơ bản là bạn có một phiên bản dữ liệu được sửa đổi thường xuyên, đây sẽ là mặt xử lý giao dịch và yêu cầu bình thường hóa nặng và chỉ mục ánh sáng để hoạt động ghi nhanh. Phiên bản thứ hai của dữ liệu được cấu trúc để xử lý phân tích và có xu hướng ít được chuẩn hóa và được lập chỉ mục nhiều hơn cho các hoạt động báo cáo nhanh.

Dữ liệu có cấu trúc xung quanh xử lý phân tích thường được xây dựng xung quanh phương pháp khối của kho dữ liệu, bao gồm các bảng thực tế đại diện cho các cạnh của bảng khối và kích thước đại diện cho các cạnh của khối.

+0

Đó thực sự là những gì tôi đang làm bây giờ. Tôi nghĩ. Tôi sẽ có một bảng có dữ liệu mà tôi cần được cập nhật thường xuyên được lập chỉ mục cho các truy vấn, vì vậy tôi chỉ phải truy vấn bảng chưa lập chỉ mục một lần [đơn vị thời gian dài] để cập nhật bảng được lập chỉ mục dữ liệu mới. –

0

Bạn chỉ muốn một chế độ xem được lập chỉ mục? Nó không chắc rằng việc viết vào một bảng chỉ với một chỉ mục sẽ gây rối. Không có khóa chính?

Nếu mỗi bản ghi lớn, bạn có thể cải thiện hiệu suất bằng cách tìm ra cách rút ngắn nó. Hoặc rút ngắn độ dài của chỉ mục bạn cần.

Nếu đây là bảng chỉ ghi (nghĩa là bạn không cần cập nhật), có thể gây chết người trong MySQL để bắt đầu lưu trữ hoặc xóa các bản ghi (và các phím chỉ mục), yêu cầu chỉ mục bắt đầu lấp đầy (tái sử dụng) các khe từ các khóa đã xóa, thay vì chỉ thêm các giá trị chỉ mục mới. Counterintuitive, nhưng bạn tốt hơn với một bảng lớn hơn trong trường hợp này.

2

Flexviews hỗ trợ chế độ xem vật lý trong MySQL bằng cách theo dõi các thay đổi đối với các bảng cơ bản và cập nhật bảng có chức năng dưới dạng chế độ xem vật hoá. Cách tiếp cận này có nghĩa là SQL được hỗ trợ bởi khung nhìn bị hạn chế một chút (vì các thói quen ghi nhật ký thay đổi phải tìm ra bảng nào cần theo dõi các thay đổi), nhưng theo tôi biết đây là gần nhất bạn có thể nhận được các khung nhìn vật chất trong MySQL .