2010-08-05 32 views
8

Tại nơi làm việc, tôi liên tục được thông báo rằng khi các thay đổi được thực hiện cho một db MySQL thì các khung nhìn cần phải được 'làm mới'. Giải pháp thủ công được chấp nhận dường như đi vào Workbench, nhấp chuột phải và nhấn 'Làm mới tất cả'Làm mới chế độ xem MySQL?

Đây có phải là cách xóa bộ nhớ cache không? Hay điều đó xây dựng lại các quan điểm từ đầu, hoặc là hoàn toàn không có thật này? Họ dường như có thể biết khi nào các lượt xem không được 'làm mới', và tôi không chắc họ hiểu nó nhiều hơn, "Bởi vì mọi thứ cần phải được làm mới khi chúng được thay đổi."

Nếu nó chỉ là xóa bộ nhớ cache, sẽ 'FLUSH TABLES WITH READ LOCK' là đủ?

Trả lời

17

Chế độ xem không cần phải được làm mới khi các thay đổi dữ liệu. Khi bạn truy vấn họ, họ sẽ tìm nạp dữ liệu mới nhất.

Họ có thể cần phải được tái tạo nếu cấu trúc bảng của bạn thay đổi:

Quan điểm định nghĩa là “đóng băng” tại gian tạo, vì vậy thay đổi đối với bảng bên dưới sau đó không ảnh hưởng đến định nghĩa khung nhìn. Ví dụ, nếu một khung nhìn được định nghĩa là SELECT * trên một bảng, các cột mới được thêm vào bảng sau đó sẽ không trở thành một phần của khung nhìn.

Source

+1

Và nếu tôi muốn thêm các cột mới trong tôi sẽ cần phải cập nhật định nghĩa xem? –

+2

@William: Có, nếu bạn muốn các cột mới xuất hiện trong chế độ xem. Nhưng tôi không nghĩ rằng "Làm mới tất cả" sẽ làm điều đó cho bạn. Tôi nghĩ bạn phải bỏ chế độ xem và tạo lại hoặc sử dụng ALTER VIEW: http://dev.mysql.com/doc/refman/5.0/en/alter-view.html –

+0

Cảm ơn, tôi nghĩ đó là giải pháp. Nó cần phải được thay đổi. –

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