2009-07-20 31 views
11

Có cần phải định kỳ cơ sở dữ liệu SQL CE nhỏ gọn không? Sẽ tự động thu nhỏ đủ? Kích thước cơ sở dữ liệu trung bình của chúng tôi là khoảng 100Mb, với người dùng lớn đạt 400-500Mb (nhưng những người này rất hiếm). Nếu chúng ta phải nhỏ gọn bằng tay, làm thế nào để chúng ta nói khi nào chúng ta nên? Có cách nào để nói mức độ phân mảnh hoặc phần trăm không gian lãng phí được lập trình không? Nếu không, chúng ta có thể sử dụng ngưỡng nào khác?Bạn nên thu gọn cơ sở dữ liệu SQL CE bao lâu một lần?

Phiên bản trước của sản phẩm được xây dựng trên cơ sở dữ liệu MS Access (gasp), vì vậy chúng tôi phải định kỳ nhỏ gọn để giữ cho nó hoạt động.

+0

Bạn có thể có may mắn hơn khi đặt câu hỏi này trên http://serverfault.com/ – andychase

Trả lời

8

Tôi sẽ tưởng tượng rằng, nếu bạn có thể thiết lập cơ sở dữ liệu để nó tự động co lại và sửa chữa khi cần thiết, đó là khá darn kỹ lưỡng. Đó là lý do tại sao có một sự thiếu thốn về văn học về thực hành tốt nhất; có một giả định phổ biến rằng nó "chỉ hoạt động". Vì vậy, bất kỳ hướng dẫn nào bạn nhận được trong lĩnh vực này sẽ mơ hồ.

Đây là một (một phần) trích dẫn từ một webcast tại http://www.microsoft.com/web/library/Details.aspx?id=sql-server-2008-compact-express-depoly-manage

Duy trì SQL Server Express Editions của bạn được khá tương tự như quản lý bất kỳ cơ sở dữ liệu đa người dùng khác, có nghĩa là rằng chúng ta có tùy chọn để đi vào và đối phó với các nhóm tệp, chúng tôi có thể xử lý với các tùy chọn sao lưu và khôi phục mô hình và những gì không. [Nhưng] khi chúng tôi xử lý với ấn bản nhỏ gọn hoặc Dịch vụ SQL CE, chúng tôi không có nhiều tùy chọn . Thực sự, các lựa chọn duy nhất chúng tôi có là cách chúng tôi muốn giải quyết việc thu hẹp và sửa chữa .

Dưới đây là một số khác từ MSDN tại Thông báo http://msdn.microsoft.com/en-us/library/ms838028.aspx#youcantakeitwithyou_sqlserverce_topic4

mà họ đưa ra chi tiết tốt về kiến ​​trúc của cơ sở dữ liệu, nhưng vẫn không đưa ra một lịch trình bảo trì. Lời khuyên của họ: làm điều đó khi cơ sở dữ liệu bắt đầu chậm. Cũng lưu ý rằng lời khuyên này là khoảng năm 2005, và mọi thứ đã được cải thiện kể từ đó; nghĩa là các quy trình bảo trì hiện đã được tự động hóa.

Giữ nhà bạn (hoặc cơ sở dữ liệu) trong thứ tự
Một yếu tố lớn trong hiệu suất của cơ sở dữ liệu lớn trong SQL Server CE 2.0 là việc tổ chức cấu trúc cơ sở dữ liệu riêng của mình. Khi ứng dụng của bạn sửa đổi nội dung của cơ sở dữ liệu , các bản ghi trở thành phân phối ngẫu nhiên trong cấu trúc tệp cơ sở dữ liệu . Yếu tố này đặc biệt đúng sau số lần chèn và xóa lớn . Để đảm bảo quyền truy cập tối ưu vào cơ sở dữ liệu, hãy nén cơ sở dữ liệu sau khi bất kỳ thay đổi đáng kể nào đối với nội dung .

Ngoài phục hồi không sử dụng không gian, thực hiện một nhỏ gọn trên cơ sở dữ liệu có hai tác động đáng chú ý trên hiệu suất: thứ nhất, nó sẽ lưu tất cả ghi bảng theo thứ tự bởi khóa chính của họ; thứ hai, nó cập nhật số liệu thống kê được sử dụng bởi bộ xử lý truy vấn .

Đặt hàng các bản ghi theo khóa chính có thể cải thiện đáng kể khóa chính quyền truy cập. Điều này là do tính chất hướng trang của SQL Server CE (và hầu hết các cơ sở dữ liệu khác). Thay vì tải bản ghi riêng lẻ từ cơ sở dữ liệu vào bộ nhớ, SQL Server CE tải khối bản ghi được gọi là trang. Khi các bản ghi cơ sở dữ liệu là được nhóm theo thứ tự theo khóa chính, tải trang chứa một bản ghi tự động tải các bản ghi đó với các giá trị khóa chính tương tự. Đối với hầu hết ứng dụng, điều này dẫn đến những gì gọi là tốt "hit rate," có nghĩa là khi ứng dụng của bạn đi để truy cập cơ sở dữ liệu liên tiếp hồ sơ, có một khả năng mạnh mẽ rằng trang này có chứa các hồ sơ là đã có trong bộ nhớ và có thể được truy cập trực tiếp . Khi hồ sơ được phân phối ngẫu nhiên hơn, như thường xảy ra sau khi một số lượng lớn các chèn và xóa, có một người nghèo tỷ lệ hit yêu cầu SQL Server CE để lấy nhiều trang từ tập tin cơ sở dữ liệu để truy cập cùng một số Hồ sơ.

Thống kê bộ xử lý truy vấn ảnh hưởng đến cách xử lý truy vấn xác định phương pháp tốt nhất cho định vị bản ghi. Các quyết định như cho dù sử dụng khóa hay thực hiện quét tuần tự để xác định vị trí một bản ghi cụ thể đều bị ảnh hưởng bởi số liệu thống kê của bộ xử lý . Khi số liệu thống kê trở nên cũ, có một số tăng khả năng bộ xử lý truy vấn có thể tạo ra quyết định tối thiểu tối ưu. Thực hiện nhỏ gọn làm mới các thống kê này.

Tôi thông cảm với kinh nghiệm của bạn về cơ sở dữ liệu Access. Tuy nhiên, tôi nghĩ rằng bạn sẽ thấy rằng kinh nghiệm của bạn với SQL Server CE mang chút giống nhau.

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