You are on page 1of 16

2.

1 Goal of the chapter


Mục tiêu chính của chương này là: thảo luận về việc điều chỉnh các thành phần cơ bản của
hệ thống CSDL. Các thành phần cơ bản bao gồm:
● Concurrency control (Kiểm soát đồng thời) - cách giảm thiểu sự tranh chấp về khoá
● Recovery and logging (Khôi phục và xuất log) - cách giảm thiểu chi phí ghi và xuất
● Operating system (Hệ điều hành) - cách tối ưu hóa kích thước bộ đệm, lập lịch quy
trình,...
● Hardware (Phần cứng) - cách cấp phát đĩa, bộ nhớ truy cập ngẫu nhiên và bộ xử lý

Hình 2.1: Các thành phần cơ bản của hệ thống CSDL

2.2 Locking and Concurrency Control


(dịch: Khoá và kiểm soát đồng thời)

Các ứng dụng CSDL phân chia công việc thành các giao dịch (transactions). Khi một giao
dịch thực thi, nó sẽ truy cập vào CSDL và thực hiện một số tính toán ở local.
Mỗi giao dịch sẽ thực hiện một cách riêng lẻ - không có hoạt động đồng thời.

Tuy nhiên, các giao dịch của một ứng dụng không đảm bảo diễn ra theo trình tự. Ví dụ: có 2
giao dịch đã được thực hiện xong, nhưng các app khác có thể đã thực hiện giao dịch sửa
đổi dữ liệu trong 1 hoặc 2 giao dịch đầu tiên này.
Vì thế, độ dài của một giao dịch có ý nghĩa quan trọng về tính đúng đắn của nó.
2.2.1 Correctness Considerations (Cân nhắc về tính đúng đắn)
Hai giao dịch được cho là đồng thời nếu các lần thực hiện của chúng có thời gian trùng
nhau. Có nghĩa là, có một số thời điểm mà cả hai giao dịch đã bắt đầu và cả hai giao dịch
đều chưa hoàn thành.
Ví dụ:

Hình 2.2: Ví dụ về giao dịch đồng thời

T1 đồng thời với T2 và T3. T2 đồng thời với T1, T2 và T4.

Kiểm soát đồng thời, là hoạt động kiểm soát sự tương tác giữa các giao dịch đồng thời. Là
một phương pháp dùng để đảm bảo các giao dịch CSDL được thực hiện một cách an toàn (tức
là không bị mất hay sai lệch dữ liệu)

2.2.2 Lock tuning (Khoá điều chỉnh)


Điều chỉnh khóa nên tiến hành theo một số chiến lược sau:
1. Sử dụng các phương tiện đặc biệt để đọc lâu
2. Loại bỏ khóa khi không cần thiết
3. Tận dụng bối cảnh giao dịch để chia giao dịch thành nhiều phần nhỏ.
4. Làm suy yếu các đảm bảo cô lập khi ứng dụng cho phép.
5. Chọn độ chi tiết thích hợp của khóa.
6. Chỉ thay đổi mô tả dữ liệu trong không gian cố định
7. Suy nghĩ về việc phân vùng.
8. Phá vỡ các hot spots.
9. Điều chỉnh thời gian deadlock.

Sử dụng các phương tiện đặc biệt để đọc lâu


Oracle, cung cấp một phương tiện đọc truy vấn không chứa khóa nào thực thi tuần tự.
Phương pháp họ sử dụng là tạo lại phiên bản cũ của bất kỳ mục dữ liệu nào bị thay đổi sau
khi truy vấn đọc bắt đầu.

Sử dụng phương tiện này có những tác động sau:


- Chỉ đọc truy vấn không bị khóa.
- Chỉ đọc các truy vấn có thể thực hiện song song và trên cùng dữ liệu với các giao
dịch cập nhật ngắn mà không gây ra hiện tượng chặn hoặc bế tắc.
- Có một số chi phí về thời gian và không gian vì hệ thống phải ghi và lưu giữ các
phiên bản cũ của dữ liệu đã được sửa đổi.

Mặc dù phương tiện này rất hữu ích, nhưng có 2 lưu ý:


1. Khi được mở rộng để đọc/ghi các giao dịch, phương pháp này (khi đó được gọi là cô
lập ảnh chụp nhanh) không đảm bảo tính đúng đắn.
2. Trong một số trường hợp, không gian cho dữ liệu đã lưu có thể quá nhỏ. Sau đó,
chúng ta có thể phải đối mặt với dòng code được trả lại.

Loại bỏ khóa không cần thiết


Khóa là không cần thiết trong hai trường hợp:
1. Khi chỉ có một giao dịch chạy tại một thời điểm, ví dụ: khi tải cơ sở dữ liệu
2. Khi tất cả các giao dịch ở chế độ chỉ đọc, ví dụ: khi thực hiện các truy vấn hỗ trợ quyết
định trên cơ sở dữ liệu lưu trữ

Thực hiện giao dịch ngắn


Đảm bảo tính đúng đắn mà hệ thống con kiểm soát đồng thời cung cấp được đưa ra trong
các đơn vị giao dịch. Ở mức độ cô lập cao nhất, mỗi giao dịch được đảm bảo xuất hiện như
thể nó được thực hiện mà không bị ảnh hưởng bởi các giao dịch đồng thời.

Một câu hỏi quan trọng là một giao dịch nên kéo dài bao lâu? Điều này rất quan trọng vì độ
dài giao dịch có hai ảnh hưởng đến hiệu suất. Một giao dịch T thực hiện càng lâu thì giao
dịch khác sẽ phải chờ càng lâu nếu bị T chặn.

Do đó, trong các tình huống có thể xảy ra việc chặn, các giao dịch ngắn tốt hơn các giao
dịch dài. Có thể "cắt nhỏ" các giao dịch thành những giao dịch ngắn hơn mà không bị mất
sự đảm bảo cô lập

Làm suy yếu các đảm bảo cô lập một cách cẩn thận
Thông thường, các đảm bảo cô lập suy yếu là đủ. SQL cung cấp các tùy chọn sau:
- Degree0 (): Các lượt đọc có thể truy cập dữ liệu bẩn, tức là dữ liệu được ghi bởi các
giao dịch không được cam kết
- Degree1 (): đọc không cam kết - Các lần đọc có thể đọc dữ liệu bẩn và sẽ không thể
lặp lại. Việc ghi không được ghi đè lên dữ liệu bẩn của các giao dịch khác.
- Degree2 (): đã cam kết đọc - Các lần đọc có thể truy cập dữ liệu đã cam kết
- Degree3 (): có thể tuần tự hóa - Các lần đọc có thể truy cập vào dữ liệu đã cam kết
và các lần đọc có thể lặp lại. Việc ghi không được ghi đè lên dữ liệu bẩn của các
giao dịch khác.
Kiểm soát mức độ chi tiết của khóa
Hầu hết các hệ thống quản lý CSDL hiện đại đều cung cấp các "độ chi tiết" khác nhau của
các ổ khóa.
- Mặc định thường là khóa mức bản ghi (record-level lock)
- Khóa cấp độ trang (page-level lock) sẽ ngăn các giao dịch đồng thời truy cập hoặc
sửa đổi tất cả các bản ghi trên trang đó.
- Khóa cấp bảng (table-level lock) sẽ ngăn các giao dịch đồng thời truy cập hoặc sửa
đổi (tùy thuộc vào loại khóa) tất cả các trang là một phần của bảng đó
Khóa ở cấp độ bản ghi có độ chi tiết tốt hơn so với khóa ở cấp độ trang, chi tiết hóa tốt hơn
so với khóa ở cấp độ bảng.

Các câu lệnh ngôn ngữ định nghĩa dữ liệu (Data definition language (DDL)
statements) có thể có hại
Definition data là thông tin về tên bảng, độ rộng cột, v.v. DDL là ngôn ngữ được sử dụng để
truy cập và thao tác với dữ liệu bảng đó.
Dữ liệu danh mục phải được truy cập bởi mọi giao dịch thực hiện biên dịch, thêm hoặc xóa
bảng, thêm hoặc xóa chỉ mục hoặc thay đổi mô tả thuộc tính.
Vì các danh mục có thể bị chỉnh sửa nhiều lần => tránh cập nhật danh mục hệ thống trong
quá trình hoạt động của hệ thống.

Suy nghĩ về phân vùng


VD: Chèn vào lịch sử
Nếu tất cả các phần chèn vào một tập dữ liệu đến trang cuối cùng của file chứa tập đó, thì
trang cuối cùng, có thể là một nút cổ chai kiểm soát đồng thời. Điều này thường xảy ra đối
với các tệp lịch sử và tệp bảo mật.
Một chiến lược tốt là phân vùng các phần chèn vào tệp trên các trang khác nhau và có thể
là các đĩa khác nhau.
Một số trường hợp có thể xảy ra:
- Thiết lập nhiều điểm chèn và chèn vào chúng một cách ngẫu nhiên
- Thiết lập chỉ mục phân nhóm dựa trên một số thuộc tính không tương quan với thời
gian chèn.

Phá vỡ các hot spots điểm nóng


Hot spot là một phần dữ liệu được truy cập bởi nhiều giao dịch và được cập nhật bởi một số
giao dịch. Các hot spots gây ra tắc nghẽn vì mỗi giao dịch cập nhật phải hoàn tất trước khi
bất kỳ giao dịch nào khác có thể nhận được khóa mục hot data.

Có ba kỹ thuật để vượt qua hot spot:


1. Sử dụng phân vùng để loại bỏ nó. Truy cập hot spots càng muộn càng tốt trong giao dịch.
2. Bởi vì các giao dịch giữ khóa cho đến khi chúng kết thúc, việc viết lại giao dịch để lấy
khóa trên một mục hot data càng muộn càng tốt sẽ giảm thiểu thời gian giao dịch giữ khóa.
3. Sử dụng các phương tiện quản lý CSDL đặc biệt.
2.3 Logging and the Recovery Subsystem
Rất khó để nói rằng ít nhất có thể khôi phục được toàn vẹn cơ sở dữ liệu đã mất trong
trường hợp lỗi phần cứng và phần mềm.

Bởi:

- Một lỗi phần mềm tùy ý có thể chuyển trạng thái cơ sở dữ liệu tốt thành một trạng
thái có lỗi tùy ý.
- Tương tự, đủ lỗi phần cứng có thể khiến dữ liệu bị mất hoặc bị hỏng. Cho điều tốt
nhất hệ thống quản lý cơ sở dữ liệu, sự thật gần hơn nhiều với những điều sau:

Cụ thể, hai loại lỗi phần cứng có thể được chấp nhận:

1. Lỗi dừng fail-stop của bộ xử lý và xóa bộ nhớ truy cập ngẫu nhiên của nó.

2. Lỗi fail-stop của đĩa, với điều kiện có đủ đĩa dự phòng.

(fail-stop có nghĩa là khi bộ xử lý bị lỗi, nó sẽ dừng lại. Trên phần cứng của nhiều
nhà cung cấp chẳng hạn như IBM và HP, mạch kiểm tra dự phòng sẽ dừng bộ xử
lý khi phát hiện thất bại.)

2.3.1 Principles of Recovery (nguyên tắc phục hồi)

Phục hồi dữ liệu là quy trình tìm kiếm và phục hồi dữ liệu, trong đó có thể có một số rủi ro
không dự đoán trước được vì vậy cần giảm bớt nguy hiểm thấp nhất trong phục hồi dữ liệu:

- Sao lưu tất cả dữ liệu


- Ngăn ngừa các thiết bị không bị hư lần nữa
- Không ghi bất cứ gì vào thiết bị trong khi bạn muốn phục hồi dữ liệu
- Cố gắng lấy chi tiết thông tin về cách thức và quá trình mất dữ liệu

Giao dịch cũng là đơn vị phục hồi theo 2 nghĩa sau:

1. Hiệu quả của các giao dịch đã cam kết phải là vĩnh viễn. Đó là, những thay đổi sẽ
vẫn tồn tại ngay cả sau khi hoàn thành các giao dịch thực hiện những thay đổi đó.
2. Các giao dịch phải là atomic. Đó là, sau khi khôi phục từ phần cứng thất bại, nó có
thể xây dựng lại cơ sở dữ liệu để phản ánh các bản cập nhật của tất cả các giao
dịch đã cam kết (tức là đã hoàn thành thành công). Nó cũng có thể loại bỏ các tác
động của bất kỳ cập nhật nào được thực hiện bằng cách hủy bỏ (còn được gọi là
cuộn lại) hoặc các giao dịch chưa hoàn thành

Để đạt được tới atomic phải dựa vào 2 nguyên tắc đơn giản :

1. . Trước khi cam kết một giao dịch nhất định, phải có khả năng hoàn tác các tác động
của giao dịch đó giao dịch, ngay cả khi bộ nhớ truy cập ngẫu nhiên không thành
công. Điều này ngụ ý rằng những hình ảnh trước của cập nhật của giao dịch (tức là,
giá trị của các mục dữ liệu trước khi giao dịch ghi chúng) phải được lưu trữ ổn định
cho đến thời điểm cam kết. Khi thất bại, họ có thể được ghi vào các đĩa cơ sở dữ
liệu nếu chúng chưa có ở đó.
2. Sau khi giao dịch được cam kết, phải có thể cài đặt các bản cập nhật mà giao dịch
đã được thực hiện vào cơ sở dữ liệu, ngay cả khi bộ nhớ truy cập ngẫu nhiên không
thành công. Vì vậy, hình ảnh sau khi cập nhật giao dịch (nghĩa là giá trị của các mục
dữ liệu giao dịch ghi) phải được ghi vào bộ nhớ ổn định một thời gian trước khi cam
kết thực sự diễn ra. Theo cách đó, nếu có lỗi bất kỳ lúc nào sau khi cơ sở dữ liệu
cam kết diễn ra, có thể "làm lại" tác dụng của các bản cập nhật đó (cài đặt các bản
cập nhật vào cơ sở dữ liệu).

2.3.2 Tuning the recovery Subsystem(Điều chỉnh hệ thống con


phục hồi)

Có bốn cách chính để điều chỉnh hệ thống con khôi phục. Chúng có thể được áp dụng riêng
lẻ hoặc kết hợp.

1. Đặt nhật ký vào đĩa hoặc đĩa chuyên dụng để tránh bị tìm kiếm.

2. Trì hoãn việc ghi cập nhật vào đĩa cơ sở dữ liệu càng lâu càng tốt.

3. Đánh đổi thời gian phục hồi mong muốn với hiệu suất không bị lỗi khi cài đặt điểm kiểm
tra và khoảng kết xuất cơ sở dữ liệu.

4. Giảm kích thước của các giao dịch cập nhật lớn.
2.4 Operating System Considerations (Vinh)
Chữ đỏ là không cần thêm vào slide - dùng để nói :D
Hệ điều hành thực hiện một số chức năng có thể có tác động đáng kể đến
hiệu suất ứng dụng cơ sở dữ liệu.
- Hệ điều hành lập lịch cho các luồng điều khiển. Các vấn đề bao gồm

lượng thời gian cần thiết để lập lịch một luồng mới (càng ít càng tốt);

thời gian của một chuỗi cơ sở dữ liệu (phải dài); và liệu các luồng

khác nhau có nên có các mức độ ưu tiên khác nhau hay không (các
luồng cơ sở dữ liệu đều phải chạy ở cùng một mức độ ưu tiên cho
hầu hết các ứng dụng).
- Hệ điều hành quản lý ánh xạ bộ nhớ ảo và vật lý. Vấn đề là làm thế
nào để tạo ra một phần bộ nhớ ảo được chia sẻ bởi tất cả các luồng
cơ sở dữ liệu, bộ đệm cơ sở dữ liệu và bao nhiêu bộ nhớ truy cập
ngẫu nhiên để dành cho bộ đệm đó.
- Hệ điều hành kiểm soát số lượng luồng người dùng có thể truy cập
đồng thời vào cơ sở dữ liệu. Mục đích là có đủ để chứa những người
dùng có sẵn trong khi tránh bị va chạm.
- Hệ điều hành quản lý các tập tin. Các vấn đề bao gồm liệu các tệp có

thể mở rộng (cần thiết cho cơ sở dữ liệu lớn); liệu các tệp có thể

được tạo từ các phần liền kề của đĩa hay không (hữu ích cho hiệu
suất quét); liệu việc đọc tệp có thể thực hiện lookahead hay không
(cũng hữu ích cho hiệu suất quét)
- Hệ điều hành cung cấp thông tin thời gian. Điều này có thể giúp xác
định xem một ứng dụng bị ràng buộc I / O hay bị ràng buộc bởi bộ xử
lý.
- Hệ điều hành kiểm soát giao tiếp giữa các không gian địa chỉ trên
cùng một trang web (cùng một bộ xử lý hoặc một bộ xử lý khác trong
cùng một bộ đa xử lý bộ nhớ dùng chung) và các không gian địa chỉ
trên các trang khác nhau

2.4.1 Scheduling (lập lịch)

Mỗi khi hệ điều hành lên lịch cho một luồng điều khiển khác nhau, nó sẽ
phải trải qua một số tính toán vô ích đối với ứng dụng cơ sở dữ liệu. Do đó,
bộ điều chỉnh cơ sở dữ liệu nên giảm thiểu lượng thời gian dành cho việc
chuyển đổi ngữ cảnh. Có 2 cách để thực hiện.
- Chọn một hệ điều hành có tiện ích chuyển đổi luồng nhẹ
- Giảm thiểu số lần chuyển ngữ cảnh. Việc chuyển đổi là không thể
tránh khỏi khi một ứng dụng đưa ra yêu cầu I / O, nhưng nên tránh
các lý do tùy chọn cho việc chuyển đổi. Điều này có nghĩa là các gián
đoạn theo phân đoạn thời gian sẽ không thường xuyên xảy ra đối với
phần lớn các ứng dụng cơ sở dữ liệu quan tâm chủ yếu đến thông
lượng cao hơn là thời gian phản hồi thấp. Trên các bộ vi xử lý hiện đại
đều cung cấp cho mỗi luồng thời gian 1 giây. Đây là thời gian tính
toán đủ cho hầu hết các ứng dụng và sẽ ngăn hệ thống treo vòng lặp
vô hạn.
Việc lập lịch có liên quan đến các ưu tiên của luồng. Hai quyết định ưu tiên
không tốt sau có thể ảnh hưởng đến hiệu suất cơ sở dữ liệu.
- Hệ thống cơ sở dữ liệu chạy ở mức ưu tiên thấp hơn các ứng dụng
khác. Khi các ứng dụng được ưu tiên tiêu tốn nhiều tài nguyên, các
ứng dụng cơ sở dữ liệu sẽ hoạt động không tốt.
- Hệ điều hành có thể cung cấp cho các chuỗi thực hiện các giao dịch
với mức độ quan trọng lớn hơn mức độ ưu tiên cao hơn. Điều này có
thể phản tác dụng nếu các giao dịch có mức độ ưu tiên khác nhau
truy cập và có thể xung đột trên cùng một mục dữ liệu.
2.4.2 Database Buffer ( Bộ đệm cơ sở dữ liệu)
Bởi vì truy cập vào đĩa mất nhiều thời gian hơn so với truy cập vào RAM, bộ
điều chỉnh cơ sở dữ liệu phải cố gắng giảm thiểu số lần truy cập đĩa. Một
cách để làm điều này là lưu trữ toàn bộ cơ sở dữ liệu trong bộ nhớ trạng
thái rắn (RAM). Điều này là khả thi đối với số lượng ứng dụng ngày càng
tăng.
Mục tiêu của việc điều chỉnh bộ nhớ cho tất cả các ứng dụng khác là để
đảm bảo rằng các trang được đọc thường xuyên hiếm khi yêu cầu quyền
truy cập đĩa.
Mục đích của bộ đệm là giảm số lượng truy cập vật lý vào bộ nhớ thứ cấp
(thường là đĩa). Hình sau cho thấy các thành phần của bộ đệm.

Hình 1: Tổ chức của bộ đệm

Tác động của bộ đệm lên số lượng truy cập vật lý phụ thuộc vào ba tham
số khác nhau.
- Logical reads and writes : Đây là các trang mà hệ quản trị cơ sở dữ
liệu truy cập thông qua các lệnh đọc và ghi của hệ thống. Một số
trang này sẽ được tìm thấy trong bộ đệm. Một số khác sẽ được dịch
sang đọc và ghi vật lý.
- Database management system (DBMS) page replacements:(Thay
thế trang của hệ thống quản lý cơ sở dữ liệu ): Đây là những lần ghi
vật lý vào bộ nhớ thứ cấp xảy ra khi một trang phải được đưa vào bộ
đệm, không có trang trống và các trang bị chiếm có giá trị dữ liệu
không có trên đĩa cơ sở dữ liệu . Bằng cách giữ cho các đĩa cơ sở dữ
liệu được cập nhật càng nhiều càng tốt thông qua việc sử dụng tính
năng ghi thuận tiện, bộ chỉnh có thể đảm bảo rằng việc thay thế hiếm
khi xảy ra.
- Operating system paging(Phân trang hệ điều hành): Đây là các truy
cập vật lý vào bộ nhớ thứ cấp (trong một số hệ thống, đĩa hoán đổi)
xảy ra khi một phần của không gian đệm nằm bên ngoài RAM. Bộ
điều chỉnh phải đảm bảo rằng việc phân trang như vậy không bao giờ
xảy ra.

2.4.3 How Much Memory Is Economical ( Có thể tiết kiệm bao


nhiêu bộ nhớ)
Ngay cả khi bỏ qua các cân nhắc về hiệu suất, bạn có thể muốn di chuyển
một số dữ liệu vào bộ nhớ chính từ đĩa nếu bạn truy cập đủ thường xuyên.

Trang được truy cập càng thường xuyên thì việc đưa trang vào bộ nhớ càng
hữu ích. Tương tự, bộ nhớ truy cập ngẫu nhiên ít tốn kém hơn được so sánh
với chi phí truy cập đĩa, thì càng nhiều trang nên được giữ trong bộ nhớ truy
cập ngẫu nhiên.

2.4.4 Multiprogramming Level (Mức đa chương trình)


Nhiều quản trị viên hệ thống tin rằng càng có nhiều người dùng đồng thời
thì hệ thống của họ hỗ trợ càng tốt. Đúng là việc tăng số lượng luồng điều
khiển (thông thường, trong trường hợp này là trong máy chủ của hệ
thống cơ sở dữ liệu) sẽ giúp tiêu thụ các chu kỳ nhàn rỗi của các bộ xử lý
chưa được sử dụng đầy đủ. Tuy nhiên, mức đa chương trình cao thực sự có
thể ảnh hưởng đến hiệu suất nếu đạt đến một trong các giới hạn sau:
- Số lượng bộ nhớ truy cập ngẫu nhiên mà người dùng chiếm dụng
vượt quá bộ nhớ thực của hệ thống, gây ra phân trang trong không
gian quy trình hoặc trong bộ đệm.
- Xung đột khóa phát sinh từ số lượng lớn các giao dịch chạy đồng
thời.

2.4.5 Files: Disk Layout and Access(Tệp: Bố trí và Truy cập


Đĩa)
Hệ thống tệp cho phép người dùng tạo, xóa, đọc và ghi tệp (là chuỗi của
byte hoặc bản ghi). Các tham số có thể điều chỉnh chính cho hệ thống tệp
mà bạn có thể gặp phải như sau:
- Kích thước của các khối đĩa sẽ được cấp phát tại một thời điểm: Một
số hệ thống tệp gọi các extents( Phạm vi). Nếu nhiều truy vấn có xu
hướng quét các phần của tệp, thì tốt hơn là bạn nên chỉ định các
phạm vi có kích thước theo đường dẫn (hoặc kích thước hình trụ) vì
lợi ích của hiệu suất. Hiệu suất ghi cũng có thể được cải thiện bằng
cách sử dụng các phạm vi. Ví dụ: nhật ký và tệp lịch sử sẽ được
hưởng lợi đáng kể từ việc sử dụng phạm vi lớn hoặc các kỹ thuật cắt
khác. Nếu việc truy cập vào một tệp là hoàn toàn ngẫu nhiên, thì
phạm vi nhỏ sẽ tốt hơn vì phạm vi nhỏ cho phép sử dụng không gian
tốt hơn.
- Yếu tố sử dụng trên các trang đĩa: Oracle 8i cung cấp cho người dùng
quyền kiểm soát mức độ đầy đủ của một trang mà vẫn cho phép
chèn. Hệ số sử dụng càng cao, trang có thể đầy đủ hơn khi xảy ra
chèn. Nếu có nhiều cập nhật đối với các hàng có thể làm cho chúng
lớn hơn (ví dụ: chuyển đổi từ NULLS sang không phải NULLS) hoặc
chèn vào bảng có chỉ mục phân nhóm, thì tốt hơn là nên đặt hệ số sử
dụng thấp (70% trở xuống). Nếu không, hãy sử dụng hệ số sử dụng
cao (90% hoặc cao hơn) để cải thiện hiệu suất quét bảng.
Hình 2 minh họa cách hệ số sử dụng đĩa ảnh hưởng đến các truy vấn quét.
Hình 2: Hệ số sử dụng đĩa.

2.5 Hardware Tuning (Bảo)

2.5.1 Tuning the Storage Subsystem (Điều chỉnh hệ thống con


lưu trữ)
Hệ thống con lưu trữ quy mô lớn bao gồm nhiều thiết bị lưu trữ, nghĩa là đĩa hoặc mảng đĩa,
mỗi thiết bị được kết nối với một hoặc một số đơn vị xử lý. Hệ thống con lưu trữ cũng bao
gồm phần mềm quản lý và định cấu hình thiết bị lưu trữ, trình quản lý khối lượng hợp lý kết
nối nhiều thiết bị lưu trữ với nhau và hệ thống tệp sắp xếp bố cục dữ liệu trên khối lượng
hợp lý.
Việc điều chỉnh hệ thống con lưu trữ liên quan đến
1. Configuring the disk array (RAID)(cấu hình mảng đĩa)
RAID( Redundant Array of Independent Disks) nghĩa là “Dự phòng các ổ đĩa độc lập”. Nó
được thiết kế với khả năng chịu lỗi hoặc bảo vệ chuyển đổi dự phòng trong một mảng lưu
trữ trên nhiều đĩa, đảm bảo rằng nếu một ổ đĩa bị lỗi, nội dung của mảng sẽ không bị mất.
Đặc điểm của RAID
Dung lượng lớn: RAID có thể hỗ trợ dung lượng lớn hơn nhiều so với một ổ đĩa. Nếu cần
thêm dung lượng, chỉ cần thêm nhiều ổ đĩa khá là đơn giản
Khả năng chịu lỗi: Đối với hầu hết các cấp RAID đều có một số mức độ dự phòng và khả
năng chịu lỗi được tích hợp vào mảng giúp ngăn ngừa mất dữ liệu.
Chạy liên tục: Khi ổ cứng bị lỗi trên máy tính thì hệ điều hành sẽ dừng lại. Tuy nhiên trong
một mảng RAID, khi các ổ đĩa cứng bị lỗi các hệ thống tiếp tục hoạt động bình thường và ổ
đĩa bị hỏng sẽ được thay thế ( giả sử hệ thống hỗ trợ các ổ đĩa trao đổi nóng).
Tốc độ: RAID có thể chạy nhanh hơn nhiều so với một ổ đĩa vì có thể ghi và đọc từ nhiều
đĩa cùng một lúc làm tăng tốc độ truyền.
Các cấp độ RAID
RAID 0(Disk striping):

– Loại RAID này phân chia dữ liệu với bất kỳ số lượng đĩa nào cho phép thông lượng dữ
liệu cao hơn. Các tập tin được đọc từ nhiều đĩa, tăng tốc độ và dung lượng.
– Tuy nhiên nhược điểm là nó không có dự phòng và khả năng chịu lỗi vì dữ liệu không
được lưu lại. Đĩa xuất hiện dưới dạng một phân vùng duy nhất và nếu một phân vùng bị lỗi
thì mảng sẽ bị hỏng và dữ liệu bị mất. RAID 0 được sử dụng khi người dùng cần tốc độ hơn
so với việc dự phòng mất dữ liệu.
RAID 1(Disk Mirroring)

– Cấp RAID này đọc và ghi cùng một dữ liệu vào hai ổ đĩa, nghĩa là nó sẽ có cả cung cấp
dự phòng. Nếu một đĩa bị lỗi, hệ thống vẫn có thể truy cập dữ liệu từ đĩa khác.
– Khi một đĩa bị lỗi được thay thế, dữ liệu được sao chép từ một trong các đĩa còn lại sang
đĩa mới và xây dựng lại mảng. Đây được coi là một cách dễ dàng để tạo lưu trữ failover.
– Tuy nhiên nhược điểm là nó làm giảm một nửa dung lượng có thể sử dụng, RAID 1
được sử dụng khi có sự dư thừa dữ liệu và yêu cầu khả năng dự phòng, tính sẵn sàng là rất
quan trọng.
RAID 5(Striping with parity)

– Loại RAID này chặn các khối dữ liệu trên nhiều đĩa như RAID 0 đồng thời cũng lưu trữ
thông tin (kiểm tra để xác định xem dữ liệu trên đĩa có bất kỳ lỗi nào không và có thể giúp
khôi phục dữ liệu trong trường hợp hỏng đĩa) .
– RAID 5 có cả tốc độ (vì dữ liệu có thể truy cập được từ nhiều đĩa) và dự phòng khi thông
tin được lưu trữ trên các đĩa. Nếu một đĩa bị lỗi, dữ liệu có thể được tạo lại từ dữ liệu trên
các đĩa khác và các khối chẵn lẻ. Khoảng một phần ba dung lượng đĩa được sử dụng trong
việc lưu trữ dữ liệu chẵn lẻ.
– Hạn chế của RAID 5 là nó có hiệu suất thấp hơn vì các máy chủ cần phải thực hiện
nhiều thao tác ghi hơn cho tính chẵn lẻ. Vì vậy RAID 5 thường được dùng cho việc lưu trữ
tập tin và máy chủ ứng dụng.
RAID 10

– Đây là sự kết hợp giữa tính năng phân loại của RAID 0 và RAID 1, nghĩa là vừa có dự
phòng (RAID 1) và hiệu năng tốt hơn của (RAID 0).
– Hạn chế của RAID 10 là khả năng sử dụng thấp và chi phí cao. Khả năng mở rộng cũng
bị hạn chế so với các cấp RAID khác. Do vậy RAID 10 được sử dụng nhiều trong các máy
chủ cơ sở dữ liệu thực hiện nhiều thao tác ghi.
Cách tính dung lượng:
- RAID 0 bằng tổng dung lượng các ổ cộng lại.
- RAID 1 chỉ duy trì dung lượng 1 ổ.
- RAID 5 sẽ có dung lượng ít hơn 1 ổ (5 ổ dùng raid 5 sẽ có dung lượng 4 ổ).
- RAID 10 sẽ chỉ tạo được khi số ổ là chẵn, phải có tối thiểu từ 4 ổ trở lên. Dung lượng bằng
tổng số ổ chia đôi (10 ổ thì dung lượng sử dụng là 5 ổ).
Ví dụ, với 1 loại ổ 1TB:
- Nếu bạn có 2 ổ cứng: Có thể chọn RAID 0 (hỏng 1 ổ là mất dữ liệu), tổng dung lượng khi
cài Window nhìn thấy sẽ là 1 ổ 2TB. Test thử: Rút 1 ổ => Báo lỗi ngay.
- Nếu bạn có 2 ổ cứng: Có thể chọn RAID 1 (hỏng 1 ổ dữ liệu vẫn an toàn), tổng dung lượng
khi cài Window nhìn thấy sẽ là 1 ổ 1TB. Test thử: Rút 1 ổ cứng ra => Không bị lỗi gì.
- Nếu bạn có 4 ổ cứng: Có thể chọn RAID 5 (hỏng 1 ổ dữ liệu vẫn an toàn), tổng dung
lượng khi cài Window nhìn thấy sẽ là 1 ổ 3TB. Test thử: Rút 1 ổ cứng ra => Không bị lỗi gì.
- Nếu bạn có 4 ổ cứng: Có thể chọn RAID 10 (hỏng 2 ổ thuộc 2 cặp RAID khác nhau vẫn an
toàn), tổng dung lượng khi cài Window nhìn thấy sẽ là 1 ổ 2TB. Test thử: Rút 1 ổ cứng ra
=> Không bị lỗi gì.

2. Using the controller cache(sử dụng bộ đệm điều khiển)


Bộ điều khiển đĩa và mảng chứa bộ nhớ có thể được sử dụng làm bộ nhớ đệm đọc hoặc bộ
nhớ đệm ghi. Hầu hết các phần mềm điều khiển cho phép chọn các chức năng bộ nhớ đệm
đọc và ghi một cách độc lập.
Bộ nhớ đệm đọc thực hiện read-ahead: một khi cơ chế đĩa hoàn thành một yêu cầu đọc, nó
sẽ tiếp tục đọc dữ liệu vào bộ đệm.
Bộ đệm ghi thực hiện write-back: các yêu cầu ghi kết thúc ngay khi dữ liệu được ghi vào bộ
đệm.
3. Disk capacity planning and sizing(dự toán công suất và kích cỡ)
Lập kế hoạch dung lượng bao gồm các vấn đề về quyết định số lượng và loại đĩa và sự kết
nối giữa các đĩa và bộ xử lý.
1. Số lượng đĩa: khi có số lượng đĩa tối thiểu này, bạn có thể tính toán băng thông dự kiến
tổng hợp trên mỗi đĩa để xem liệu còn cần nhiều hơn nữa hay không.
2. Các đặc điểm của mỗi đĩa: thời gian tìm kiếm, độ trễ quay, kích thước bộ nhớ cache và
tốc độ truyền dữ liệu ảnh hưởng đến hiệu suất của hệ thống con lưu trữ.
3. Các đặc điểm của liên kết.
4. Configuring logical volumes(cấu hình phân vùng logic)
Phân bổ dung lượng lưu trữ ít hơn hoặc nhiều hơn dung lượng thực tế của ổ đĩa vật lý. Ví
dụ: chia dung lượng của một ổ cứng thành 2 ô đĩa luận lý trên windows.
2.5.2 Enhancing the Hardware Configuration(Nâng cao cấu
hình phần cứng)
Có ba cách chính để thêm phần cứng vào hệ thống của bạn: thêm bộ nhớ, thêm đĩa hoặc
thêm bộ xử lý.
Thêm bộ nhớ
Trong hầu hết các hệ thống, cải tiến phần cứng rẻ nhất là thêm bộ nhớ và sau đó là tăng
kích thước của vùng đệm. Điều này sẽ giảm tải cho đĩa vì nó tăng tỷ lệ truy cập mà không
tăng phân trang.
Thêm đĩa
Chúng ta phải thêm đĩa nếu lượng dữ liệu muốn lưu trữ vượt quá dung lượng của đĩa,
nhưng điều này là không phù hợp trong hầu hết các ứng dụng. Trên thực tế, băng thông đĩa
là tài nguyên quan trọng hơn là dung lượng đĩa.
Thêm bộ xử lý
Khi nhiều hơn một CPU làm việc cùng nhau để thực hiện các lệnh hoặc chương trình máy
tính, đây là cấu hình đa xử lý.

You might also like