Khi nào các chỉ mục không bao gồm nên được lưu trữ trên các nhóm riêng biệt?


16

Tôi đã nghe nói rằng việc lưu trữ các chỉ mục trên một nhóm và ổ đĩa khác làm tăng hiệu suất trong cơ sở dữ liệu vì ổ đĩa không phải quay đi quay lại giữa chỉ mục và dữ liệu mà chỉ mục đề cập đến. Tôi cũng đã nghe nói rằng đây là một huyền thoại.

Khi nào nên lưu trữ các chỉ mục không bao gồm trên một nhóm và ổ đĩa riêng biệt? Bằng chứng perfmon / profiler nào sẽ đưa tôi đến kết luận đó? Phần cứng có đóng vai trò trong quyết định (liệu RAID / SAN có được sử dụng trên một ổ đĩa không)?

Câu trả lời:


10

Phần chậm nhất của hệ thống DB là các ổ đĩa. Loại bỏ các tắc nghẽn ở cấp độ đĩa sẽ cải thiện hiệu suất. Khi dữ liệu đang được tra cứu và một chỉ mục được sử dụng, chỉ mục đầu tiên được tra cứu và sau đó dữ liệu tương ứng được tìm nạp. Nếu cả chỉ mục và dữ liệu nằm trên cùng một đĩa, thì sẽ có một số tranh chấp xảy ra. Trong khi đó, nếu dữ liệu nằm trên một đĩa (vật lý) khác, thì sẽ xảy ra IO nhanh hơn, do đó tăng hiệu suất. Phần chính cần lưu ý là dữ liệu hoặc chỉ mục nằm trên các đĩa vật lý hoặc LUN riêng biệt.

Bạn sẽ sử dụng một kịch bản như vậy nếu bạn cần có hiệu suất tốt hơn từ hệ thống của mình, miễn là bạn có các đĩa. Đối với quầy perfmon của bạn, bạn có thể sử dụng Physical Disk – Avg. Disk sec/Read, Physical Disk – Avg. Disk sec/Write, Physical Disk – Disk Reads/sec, Physical Disk – Disk Writes/secđể có một trước và sau khi so sánh các thay đổi của bạn.


1
Nếu thay vì hai đĩa vật lý riêng biệt nếu bằng cách nào đó tôi quản lý các chỉ mục và dữ liệu trên hai ổ đĩa riêng biệt, ví dụ: D: \ và E: \ hiện trên cùng một Đĩa cứng thì nó vẫn giúp tôi tăng hiệu suất nếu tôi xem xét sự tranh chấp liên quan đến việc đọc lưu trữ đĩa cứng?
RBT

5

Điều chắc chắn là việc trải rộng I / O đồng thời giữa các ổ đĩa khác nhau sẽ tăng hiệu suất - đó không phải là chuyện hoang đường. Có một huyền thoại là làm điều đó hai lần sẽ cải thiện hiệu suất một lần nữa.

Nếu bạn CÙNG , thì việc chia mảng của bạn thành hai phân vùng và đặt các chỉ mục trên một và các bảng trên một bảng khác là một sự lãng phí thời gian.


Tôi đồng ý, nhưng tôi không tin rằng đây là những gì anh ấy đã hỏi.
NTDLS

Câu hỏi được đặt ra: "Phần cứng có đóng vai trò trong quyết định (liệu RAID / SAN có được sử dụng trên một ổ đĩa không)?". Câu trả lời của tôi về cơ bản là: Nếu bạn RAID, đừng bận tâm đến việc chia chỉ mục và bảng. Điều đó không có nghĩa là bạn chắc chắn nên ngay cả khi bạn không có RAID ...
Jack Douglas

5

Việc tách các Chỉ mục khỏi dữ liệu thành các nhóm riêng biệt = cải thiện hiệu suất là điều gây tranh cãi. Sự cải thiện hiệu suất "có thể" xảy ra nếu bạn có phần cứng cơ bản để hỗ trợ nó, nhưng thực tế là việc tách chúng ra khỏi các nhóm fileg khác nhau sẽ không giúp bạn tăng cường hoàn hảo. Và nó cũng KHÔNG dễ dàng để đo mức tăng hoàn hảo vì điều này.

Tham chiếu: http://weblogs.sqlteam.com/dang/archive/2008/08/01/Are-you-a-DBA-Monkey.aspx

Bạn nên đặt câu hỏi trước. Tại sao bạn cần phải làm điều này?

  1. Bạn đang tìm cách cải thiện hiệu suất của các bản sao lưu bằng cách KHÔNG bao gồm các chỉ mục?
  2. Bạn đang tìm cách cải thiện hiệu suất của việc đọc và ghi vào các chỉ mục này?
  3. Bạn đang làm điều này để quản lý tốt hơn vị trí của các đối tượng cơ bản?
  4. Bạn có khối lượng dữ liệu lớn có nhu cầu khác nhau về hiệu suất không?
  5. Bạn đang tìm cách sử dụng SSD cho các chỉ mục không được phân cụm để cải thiện hiệu suất, v.v ...

Tôi đã xem xét nhiệm vụ này để hỗ trợ nhu cầu số 5 trong danh sách trên và có vẻ như đó là một đề xuất tốt cho tôi mặc dù chúng tôi chưa hành động theo điều đó.

Lưu ý rằng quyết định này KHÔNG dễ thực hiện và bạn cần tìm ra những gì bạn đang cố gắng thực hiện và đảm bảo rằng bạn có phần cứng để hỗ trợ. Đừng thực hiện những thay đổi như thế này trừ khi bạn đã thử nghiệm tốt và bạn sẽ thấy sự gia tăng đáng kể về sự hoàn hảo nếu không bạn cũng có thể bỏ ý tưởng này. Điều đó KHÔNG đáng nếu bạn đang mong đợi sự tăng cường hoàn hảo bằng cách tách các chỉ mục thành các nhóm fileg riêng biệt.


Tôi thích bài viết của Dan :-). Tôi đoán điều đó xảy ra với tất cả chúng ta để nhập các tiêu chuẩn cũ của công ty và đôi khi đặt câu hỏi về tính hữu dụng của nó.
Mary

1

Tôi sẽ cho bạn biết kinh nghiệm cá nhân của tôi về mặt hàng này. Các chỉ mục không được nhóm nên được lưu trữ trên một nhóm riêng biệt khi ổ đĩa hiện tại không đủ lớn cho không gian cần thiết :-). Bạn có thể cười về nó .. nhưng nó xảy ra.

Vì vậy, một sửa chữa khẩn cấp cho chúng tôi, khi chúng tôi sắp không còn dung lượng trống trên ổ dữ liệu, là tạo một tập lệnh đẹp để tạo lại tất cả các chỉ mục không được phân cụm trực tuyến trên một nhóm mới trên một ổ đĩa có không gian trống. Mọi người sẽ nghĩ rằng thật dễ dàng và nhanh chóng để mua bộ nhớ mới .. nhưng thực tế không phải vậy.

Về hiệu suất, chúng tôi đã không thấy bất cứ điều gì khác thường sau khi di chuyển. Nhưng đó là một hộp lưu trữ SAN lớn, nơi mọi thứ được tổ chức cùng nhau :-).


1

Nói chung; tách dữ liệu và chỉ mục vào các đĩa thực hiện tương tự riêng biệt có thể tăng hiệu suất cho các hoạt động ghi đáng kể vào bảng đó hoặc các hoạt động đọc lớn sử dụng chỉ mục đó. Một phương pháp tương tự với một số thao tác I / O khác, như bảng được phân vùng trải rộng trên nhiều đĩa vật lý.

Tuy nhiên, nó cũng chủ yếu phụ thuộc vào việc lưu trữ . Ví dụ; nếu bạn có một máy chủ với một F Muff ioDrive đẹp (hoặc một cái gì đó tương tự) và cũng có các đĩa quay riêng lẻ. Có thể có lợi hơn khi giữ mọi thứ trên ioDrive (trừ khi không gian bị giới hạn). Ngoài ra còn có những điều khác cần xem xét - cấu hình RAID, cấu hình lưu trữ mạng.

Thực hiện một số băng ghế đánh dấu trên máy chủ thử nghiệm có phần cứng tương tự hoặc (chỉ khi máy chủ thứ cấp không phải là tùy chọn) trong giờ cao điểm với dữ liệu tạm thời. Liên kết DBA-Monkey của Sankar ở trên là thức ăn tốt cho suy nghĩ.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.