Kiểm soát đồng thời

Một phần của tài liệu (LUẬN văn THẠC sĩ) một số kỹ thuật truy cập trong cơ sở dữ liệu trên bộ nhớ (Trang 46)

Có nhiều thuật toán kiểm soát đồng thời, chúng có thể đƣợc chia thành ba mục chính sau: Xác nhận tuần tự, nhãn thời gian và khóa. Các phƣơng pháp khóa cung cấp hiệu suất tốt nhất cho hầu hết các môi trƣờng thực tiễn. Trong hệ thống CSDL thƣờng trú bộ nhớ, các chi phí liên quan của xác nhận tuần tự, nhãn thời gian và khóa sẽ duy trì về sự giống nhau, nhƣ hầu hết mô hình hệ thống CSDL đã giữ cơ chế kiểm soát đồng thời của chúng trong bộ nhớ chính. Vì vậy, dƣờng nhƣ khóa cũng sẽ là phƣơng pháp phù hợp cho các hệ thống CSDL thƣờng trú bộ nhớ.

Một phƣơng pháp kiểm soát đồng thời dựa trên khóa thiết lập các khóa của nó trên một vài đơn vị của CSDL, mà một phần đƣợc gọi là một granule. Tối Ƣu kích thƣớc granule cho hệ thống CSDL phần nào phụ thuộc ứng dụng vì các giao dịch truy cập số lƣợng lớn CSDL có thể khóa dữ liệu của chúng hầu hết hiệu quả bởi sử dụng nhiều các khóa granularity lock và các giao dịch mà truy cập số lƣợng nhỏ CSDL có thể duy trì một chia sẻ mức độ cao bởi sử dụng ít các khóa granularity lock. Nhƣ vậy một cơ chế khóa phân cấp cho phép các giao dịch truy cập một lƣợng lớn dữ liệu để thiết lập các khóa mức quan hệ và

các giao dịch truy cập một lƣợng nhỏ dữ liệu để thiết lập các khóa mức bản ghi. Khóa phân cấp đƣợc xem chấp nhận đƣợc trong hệ thống trên đĩa bởi vì chi phí khóa là nhỏ hơn nhiều so với chi phí của tham chiếu một disk-page. Tuy nhiên chi phí của một tham chiếu CSDL trong hệ thống thƣờng trú bộ nhớ là chi phí tìm kiếm trên chỉ mục hoặc trong một vài trƣờng hợp chỉ là chi phí tham chiếu bộ nhớ đơn giản. Chi phí thiết lập một khóa bao gồm một bảng tìm kiếm và cấp phát một cấu trúc kiểm soát khóa, chi phí truy cập CSDL và chi phí thiết lập một khóa trong hệ thống CSDL thƣờng trú bộ nhớ là khá giống nhau. Nếu hai khóa cần đƣợc thiết lập cho mỗi CSDL tham chiếu nhờ khóa phân cấp thì chi phí khóa có thể vƣợt qua chi phí tham chiếu CSDL.

Một phƣơng tiếp cận khóa phân cấp là cần thiết vì nó cung cấp một cách cho một giao dịch để khóa một lƣợng thích hợp dữ liệu. Tuy nhiên, các cơ chế khóa phải đƣợc thay đổi để giảm chi phí khóa của chúng. Một cách để tối thiểu chi phí khóa sẽ làm giảm thời gian tìm kiếm đƣợc yêu cầu để xác định vị trí một khối kiểm soát khóa của thực thể CSDL. Một khả năng tiếp cận sẽ lƣu trữ các con trỏ bên trong các thực thể CSDL mà trỏ tới các khối kiểm soát khóa của chúng. Điều này sẽ tiết kiệm thời gian, vì nó sẽ tốn duy nhất một bộ nhớ gián tiếp để truy cập thông tin khóa, nhƣng lƣu trữ những con trỏ này cho mỗi thực thể CSDL sẽ sử dụng một lƣợng lớn bộ nhớ mà nếu không thì để sử dụng chứa dữ liệu.

Trong hệ thống CSDL thƣờng trú bộ nhớ, truy cập ổ đĩa không làm ngắt xử lý giao dịch thông thƣờng. Điều này cho thấy rằng một lát thời gian CPU có thể là dài vì vậy nhiều thời gian đƣợc dành cho xử lý giao dịch và ít thời gian đƣợc dành cho quá trình chuyển đổi. Không có ổ đĩa tƣơng tác, hầu hết các giao dịch sẽ hoàn thành nhanh và giữ các khóa chỉ trong thời gian ngắn, vì vậy chia sẻ dữ liệu là không quan trọng. Thực vậy, cho một bộ xử lý duy nhất chỉ chạy các giao dịch ngắn, hoàn thành nối tiếp là có thể, do đó loại bỏ sự cần thiết cho toàn bộ kiểm soát đồng thời. Tuy nhiên, hầu hết các hệ thống CSDL thực tế đôi khi chạy các giao dịch dài và sử dụng bộ đa xử lý, vì vậy một vài hình thức của

kiểm soát đồng thời vẫn cần thiết. Trong một hệ thống đa xử lý, một giao dịch ngắn vẫn có thể khóa một quan hệ hoàn toàn mà không hạn chế đáng kể tiến trình của bất kỳ các giao dịch nào khác.

2.3.2.1. Cấu trúc khóa

Các quan hệ giữ một lƣợng nhỏ thông tin khóa tĩnh. Khối kiểm kiểm soát khóa tĩnh quan hệ thƣờng trú trong một vị trí xác định trong phân vùng thứ nhất của một phân đoạn quan hệ, vì vậy nó dễ dàng tìm thấy bất kỳ địa chỉ bản ghi nào trong quan hệ đó. Khối thông tin kiểm soát khóa tĩnh của một quan hệ bao gồm trạng thái khóa hiện tại của nó (mức bản ghi hoặc mức quan hệ) và một con trỏ tới danh sách các khối kiểm soát khóa giao dịch (đƣợc cấp phát động) mà đƣợc giữ bởi mỗi giao dịch chứa một khóa trên quan hệ này. (Hình 2.7). Mỗi khối kiểm soát khóa giao dịch chứa một chế độ khóa (chia sẻ hoặc độc quyền), một danh sách các con trỏ bản ghi tƣơng ứng với thiết lập đọc của nó, một danh sách các con trỏ bản ghi tƣơng ứng với thiết lập ghi của nó, một danh sách các vị từ tƣơng ứng với thiết lập đọc, giao dịch id của nó và danh sách các giao dịch khác chặn trên bất kỳ các khối của nó (Hình 2.8). Các giao dịch luôn luôn tạo ra các khối kiểm soát khóa cho mỗi quan hệ chúng tham chiếu bởi vì bất kỳ một giá trị trạng thái khóa của quan hệ nào, các giao dịch luôn luôn duy trì một thiết lập đọc, một thiết lập ghi và một danh sách các vị từ đặc biệt cho quan hệ đó

Hình 2. 7. Cấu trúc khối kiểm soát khóa quan hệ

Cờ trạng thái khóa cho một quan hệ đƣợc giữ trong khối kiểm soát khóa tĩnh của quan hệ. Vì một giao dịch chạy, nó kiểm tra cờ trạng thái khóa này trƣớc khi mỗi bản ghi tham chiếu. Một giao dịch thiết lập khóa thích hợp theo giá trị cờ trạng thái khóa. Vì cờ trạng thái khóa cho một quan hệ có thể thay đổi trong suốt quá trình của một giao dịch nên nó phải đƣợc kiểm tra trƣớc khi mỗi hoạt động khóa có khả năng. Một vài kiểu của các giao dịch, tuy chúng sẽ buộc sử dụng một khóa quan hệ nhƣng chúng có thể sẽ không cần kiểm tra cờ trạng thái khóa. Ví dụ là các giao dịch đƣợc sử dụng để tạo ra các chỉ mục, thực hiện quét quan hệ và các phân vùng checkpoint.

Hình 2. 8. Cấu trúc khối kiểm soát khóa giao dịch 2.3.2.2. Các khóa quan hệ

Một khóa đơn tại mức quan hệ khóa cả quan hệ và tất cả các chỉ mục liên kết của nó. Các chốt mức phân vùng và mức chỉ mục không cần thiết khi có một khóa quan hệ, vì không có xung đột giữa bộ đọc và bộ ghi hoặc bộ ghi và bộ ghi. Mỗi khóa quan hệ thiết lập bởi một giao dịch đƣợc đại diện bởi một khối kiểm soát khóa vật lý mà đƣợc đính kèm với khối kiểm soát khóa tĩnh của quan hệ.

2.3.2.3. Các khóa bản ghi

Các khóa bản ghi đƣợc quản lý khác so với các khóa quan hệ. Chúng có các bản ghi trong một bảng khóa mà chứa địa chỉ bản ghi của chúng, chế độ khóa của chúng và id giao dịch của giao dịch của chúng. Không cần giữ một danh sách của việc chặn các giao dịch cho mỗi khóa bản ghi của giao dịch vì tất

cả chúng sẽ đƣợc phát hành tại cùng một thời điểm. Thay vào đó các giao dịch khóa có thể đƣợc kết hợp và giữ trong một khối kiểm soát khóa giao dịch. Có vài chi phí tiềm ẩn mà là một phần của khóa mức bản ghi: Khi các khóa bản ghi đƣợc sử dụng, các chốt để

cho hoạt động đọc và cập nhật trên cấu trúc chỉ mục và các phân vùng đƣợc yêu cầu. Mỗi hoạt động đọc hoặc ghi bản ghi phải đƣợc thiết lập một chốt phân vùng và nếu một trƣờng chỉ mục đƣợc cập nhật hoặc chỉ mục đƣợc sử dụng trong hoạt động tìm kiếm, một chốt chỉ mục cũng phải đƣợc thiết lập. Các bộ ghi của bản ghi trong một quan hệ cũng phải đƣợc kiểm tra tất cả các vị từ đọc nổi bật cho quan hệ đó - một nhiệm vụ có khả năng tiêu tốn thời gian.

2.3.2.4. Các khóa vị từ

Khi khóa tại mức bản ghi, vấn đề của các bản ghi ảo có thể xuất hiện. Các khóa chính xác, một dạng của các khóa vị từ, đã đƣợc đề xuất nhƣ là một phƣơng thức để giải quyết vấn đề ảo này. Các khóa chính xác không cố phát hiện sự giao nhau của các vị từ đọc hoặc ghi vì vấn đề này là vấn đề nan giải cho các vị từ nói chung. Thay vì các bộ ghi của các bản ghi chỉ đơn gian so sánh mỗi giá trị mới để đƣợc ghi dựa vào tất cả các các vị từ đọc nổi bật, và các bộ đọc so sánh các vị từ đọc của chúng trở lại một danh sách tất cả các bản ghi cập nhật nổi bật.

Phƣơng pháp này sử dụng các khóa chia sẻ và độc quyền thông thƣờng cho việc đồng bộ ghi/ghi và ghi/đọc, chúng yêu cầu các bộ đọc gửi các vị từ của chúng để giữ các bộ ghi ở ngoài của các vấn đề ảo (đồng bộ đọc/ghi). Nói cách khác, phƣơng pháp này sử dụng các khóa bản ghi để trình bày các bộ đọc và các bộ ghi từ việc nhìn thấy hoặc chỉnh sửa dữ liệu không ràng buộc của các bộ ghi khác và nó gửi các vị từ đọc để cho phép các bộ đọc giữ các bộ ghi ở ngoài các bản ghi ảo.

Điều này tƣơng tự cơ chế khóa chính xác trong nghĩa là nó kiểm tra các giá trị của một bộ ghi dựa vào một danh sách các vị từ đọc. Sự khác nhau giữa các phƣơng pháp là thuật toán các khóa chính xác đó kiểm tra một yêu cầu vị từ của

bộ đọc dựa vào một danh sách cập nhật nổi bật cho việc đồng bộ ghi/đọc, trong khi đó phƣơng pháp này sử dụng chỉ đơn giản là các khóa chia sẻ và độc quyền.

Các vị từ đọc đƣợc tạo ra khi các giao dịch đƣợc biên dịch. Các vị từ cho một giao dịch đƣợc đính kèm với khối kiểm soát khóa của nó (Hình 2.11). Mỗi nút trong danh sách vị từ chứa một phần nhỏ của code biên dịch mà các kiểm tra ghi các giá trị dựa vào vị từ chứa trong code biên dịch. Nếu các khối một bộ ghi trên một vị từ đọc khóa thì nó đƣợc nhận vào khối kiểm soát khóa giao dịch của giao dịch chứa khóa vị từ.

2.3.2.5. Các khóa thành phần chỉ mục

Khi trạng thái khóa của một quan hệ tại mức bản ghi, các chỉ mục đƣợc chốt tại mức chỉ mục hơn là mức phân vùng vì một chốt mức phân vùng sẽ đƣợc kiểm tra cho mỗi nút chỉ mục đƣợc chạm trong một hoạt động tìm kiếm, làm chậm nó xuống một cách đáng kể. Do đó, vì các lý do hiệu suất, toàn bộ chỉ mục đƣợc chốt trong quá trình cập nhật. Các khóa nút chỉ mục đƣợc sử dụng để đảm bảo rằng trật tự của cập nhật áp dụng với các nút chỉ mục tƣơng ứng với giao dịch cam kết thứ tự. Chỉ các hoạt động ghi cần tuân theo các khóa nút chỉ mục vì đồng bộ đọc/ghi cho các bản ghi đƣợc thực hiện trong bản thân quan hệ của nó. Ngoại trừ trong quá trình các hoạt động cập nhật, một chỉ mục chắc chắn nằm trong một trạng thái phù hợp, vì vậy một tìm kiếm chỉ mục có thể vẫn đƣợc xử lý, việc sử dụng các con trỏ bản ghi trong chỉ mục duy nhất nhƣ là tìm kiếm thông tin đƣờng dẫn. Khi khóa đƣợc thực hiện tại mức quan hệ, các nút chỉ mục đƣợc cập nhật có địa chỉ của chúng nhập vào một nút chỉ mục ghi danh sách cũng nhƣ các bản ghi đƣợc sẽ có địa chỉ của chúng nhập vào bản ghi ghi danh sách.

Đối với T Tree, các con trỏ tới các khối kiểm soát khóa đƣợc giữ trong các nút thực tế, và đối với Modified Linear Hashing, các con trỏ khối kiểm soát khóa đƣợc giữa trong một mảng con trỏ khóa riêng biệt. Một khóa tƣơng ứng với một số của các phần tử hàm băm; số đƣợc tạo bởi lũy thừa của 2, vì vậy kiểm tra khóa sẽ dễ dàng vì chúng chỉ yêu cầu một mặt nạ hoạt động trên địa

chỉ của phần tử hàm băm. Bất kỳ nút nào tham gia trong một hoạt động xoay T Tree hoặc một sự phân chia bảng băm cũng phải đƣợc khóa. Khóa tất cả các nút T Tree tham gia trong một phép quay cây có thể là tốn kém nhƣng các phép quay hiếm khi xảy ra.

Trong Chƣơng này tìm hiểu về CSDL trong bộ nhớ. Một chức năng quan trọng trong môi trƣờng CSDL trong bộ nhớ đó là khả năng đánh địa chỉ trực tiếp các thực thể CSDL. Khả năng đánh địa chỉ trực tiếp cho phép các con trỏ bản ghi đƣợc sử dụng bất kỳ giá trị ở đâu hoặc toàn bộ các bản ghi nếu cần. Nội dung Chƣơng đã trình bày đƣợc kiến trúc CSDL trong bộ nhớ, các cấu trúc chỉ mục, xử lý truy vấn, khôi phục, kiểm soát đồng thời, một cấu trúc điển hình đƣợc gắn với CSDL trong bộ nhớ là T Tree. Tiếp theo, Chƣơng 3 trình bày thử nghiệm về CSDL trong bộ nhớ với môi trƣờng là Oracle TimesTen. So sánh thời gian thực hiện việc insert dữ liệu trong TimesTen với MS SQL Server 2008 và đánh giá quá trình thử nghiệm.

Chƣơng 3: T Ử N M CƠ SỞ DỮ L U TRÊN BỘ N Ớ 3.1. Phát biểu bài toán

Tại Việt Nam, yêu cầu cần tìm ra những phƣơng pháp, những hƣớng đi mới cho hệ thống Cơ sở dữ liệu càng trở nên cấp thiết hơn bao giờ hết khi hệ thống công nghệ thông tin ngày càng đóng vai trò quan trọng trong quy trình hoạt động kinh doanh và thành công của doanh nghiệp, số lƣợng các doanh nghiệp tổ chức ra đời ngày càng nhiều trong môi trƣờng kinh doanh cạnh tranh hơn, và chủ trƣơng của Nhà nƣớc về phát triển khoa học công nghệ phục vụ sự phát triển chung của đất nƣớc.

Để giải quyết vấn đề này, hiện cũng đã có các nghiên cứu thử nghiệm nhằm làm tăng tốc độ truy vấn dữ liệu. Từ cơ sở tốc độ truy vấn của ổ cứng chậm hơn chip nhớ flash, chip nhớ chậm hơn bộ nhớ chính (RAM), một hƣớng đi là đổi phƣơng tiện lƣu trữ dữ liệu của CSDL từ ổ cứng sang SSD (chíp nhớ flash) hoặc RAM disk (giả lập ổ cứng thành RAM), tốc độ truy vấn đã đƣợc cải thiện. Một hƣớng đi khác là In-memory database (IMDB), lƣu toàn bộ dữ liệu trong bộ nhớ chính. Kết quả so sánh giữa cơ sở dữ liệu trên ổ cứng, trên SSD, trên bộ nhớ chính đã cho thấy sử dụng cơ sở dữ liệu trên bộ nhớ là một hƣớng đi đúng đắn.

3.2. Lựa chọn giải pháp

Qua những kiến thức và đánh giá về các sản phẩm IMDB, tôi đã chọn Oracle TimesTen vì những lý do sau đây:

- Oracle là nhà cung cấp giải pháp CSDL hàng đầu thế giới.

- Tôi đã làm việc nhiều với CSDL Oracle truyền thống, môi trƣờng công việc của tôi cũng sử dụng Oracle.

- Do cùng một nhà cung cấp nên giải pháp Oracle TimesTen có thể tích hợp rất dễ dàng, tƣơng thích tốt với các CSDL Oracle hiện tại.

- Lƣợng tri thức hỗ trợ về Oracle TimesTen khá nhiều trên internet cũng nhƣ các diễn đàn, với cộng đồng sử dụng lớn.

- Có thể download và dùng thử hệ thống Oracle TimesTen một cách dễ dàng và hợp pháp.

Sau khi chọn lựa Oracle TimesTen, dƣới đây trình bày về các nguyên tắc lựa chọn các tính năng của Oracle TimesTen :

3.2.1. Kết nối trực tiếp hay client/server?

a/ Lựa chọn 1: Kết nối kiểu kết nối client/server

- Ƣu điểm: Có thể cài TimesTen trên một máy, các máy ứng dụng khác kết nối đến máy này.

- Nhƣợc điểm: Không đạt đƣợc tốc độ tối ƣu nhất (tốc độ truy vấn dữ liệu vẫn nhanh hơn so với Oracle truyền thống nhƣng mất chi phí cho việc truyền dữ liệu qua mạng đến ứng dụng).

Khi nào nên dùng:

- Để cải thiện tốc độ truy vấn dữ liệu, nhƣng do mô hình hệ thống bất tiện trong việc

Một phần của tài liệu (LUẬN văn THẠC sĩ) một số kỹ thuật truy cập trong cơ sở dữ liệu trên bộ nhớ (Trang 46)