TheSQLTiêu chuẩn xác định bốn cấp độ cô lập kèo bóng đá việt nam. Nghiêm ngặt nhất là có thể nối tiếp, được xác định bởi tiêu chuẩn trong một đoạn nói rằng bất kỳ việc thực hiện đồng thời của một tập hợp các kèo bóng đá việt nam có thể nối tiếp được đảm bảo để tạo ra hiệu ứng tương tự như chạy chúng tại một thời điểm theo một thứ tự.
Hiện tượng bị cấm ở kèo bóng đá việt nam cấp độ khác nhau là:
Một kèo bóng đá việt nam đọc dữ liệu được viết bởi một kèo bóng đá việt nam không cam kết đồng thời.
Một kèo bóng đá việt nam đọc lại dữ liệu mà nó đã đọc trước đây và thấy rằng dữ liệu đã được sửa đổi bởi một kèo bóng đá việt nam khác (được cam kết kể từ lần đọc ban đầu).
Một kèo bóng đá việt nam tái hiện một truy vấn trả về một bộ các hàng thỏa mãn điều kiện tìm kiếm và thấy rằng tập hợp các hàng thỏa mãn điều kiện đã thay đổi do một kèo bóng đá việt nam được cam kết gần đây.
Kết quả của việc thực hiện thành công một nhóm kèo bóng đá việt nam không phù hợp với tất cả các thứ tự có thể chạy các kèo bóng đá việt nam đó cùng một lúc.
Mức độ cô lập kèo bóng đá việt nam được thực hiện theo tiêu chuẩn SQL được mô tả trongBảng 13.1.
Bảng 13.1.Mức cách cô lập kèo bóng đá việt nam
Cấp độ cô kèo bóng đá việt nam | đọc bẩn | không thể lặp lại đọc | Phantom Read | dị thường tuần tự hóa |
---|---|---|---|---|
Đọc không được cam kết | được phép, nhưng không phải trong pg | Có thể | có thể | Có thể |
Đọc cam kết | Không thể | có thể | có thể | có thể |
Đọc lặp lại | Không thể | Không thể | được phép, nhưng không phải trong pg | có thể |
serializable | Không thể | Không thể | Không thể | Không thể |
inkèo bóng đá việt nam, bạn có thể yêu cầu bất kỳ cấp độ nào trong bốn cấp độ phân lập kèo bóng đá việt nam tiêu chuẩn, nhưng nội bộ chỉ có ba mức cách ly riêng biệt được thực hiện, tức là, chế độ không cam kết của PostgreSQL hoạt động như đã được đọc. Điều này là do đó là cách hợp lý duy nhất để ánh xạ các mức cách ly tiêu chuẩn cho kiến trúc kiểm soát đồng thời đa dạng của PostgreSQL.
Bảng cũng cho thấy việc thực hiện đọc lặp lại của kèo bóng đá việt nam không cho phép đọc Phantom. Điều này có thể chấp nhận được theo tiêu chuẩn SQL vì tiêu chuẩn chỉ định bất thường nào phảikhôngxảy ra ở một số cấp độ cô kèo bóng đá việt nam nhất định; Đảm bảo cao hơn là chấp nhận được.
Để đặt mức cách ly kèo bóng đá việt nam của kèo bóng đá việt nam, sử dụng lệnhĐặt kèo bóng đá việt nam.
Một sốkèo bóng đá việt namKiểu và chức năng dữ liệu có các quy tắc đặc biệt liên quan đến hành vi kèo bóng đá việt nam. Cụ thể, các thay đổi được thực hiện thành một chuỗi (và do đó là bộ đếm của một cột được khai báo bằng cách sử dụngnối tiếp
) ngay lập tức hiển thị cho tất cả các kèo bóng đá việt nam khác và không được quay lại nếu kèo bóng đá việt nam thực hiện các thay đổi bị hủy bỏ. Nhìn thấyPhần 9.17vàPhần 8.1.4.
Đọc cam kếtlà mức cách ly mặc định trongkèo bóng đá việt nam. Khi một kèo bóng đá việt nam sử dụng cấp độ cô lập này, mộtChọn
Truy vấn (không cóđể cập nhật/chia sẻ
mệnh đề) chỉ thấy dữ liệu được cam kết trước khi truy vấn bắt đầu; Nó không bao giờ thấy dữ liệu không được cam kết hoặc các thay đổi được thực hiện trong quá trình thực hiện truy vấn bằng các kèo bóng đá việt nam đồng thời.Chọn
Truy vấn thấy một ảnh chụp nhanh cơ sở dữ liệu kể từ khi truy vấn bắt đầu chạy. Tuy nhiên,Chọn
Không thấy các hiệu ứng của các bản cập nhật trước được thực hiện trong kèo bóng đá việt nam của chính nó, mặc dù chúng chưa được cam kết. Cũng lưu ý rằng hai liên tiếpChọn
Các lệnh có thể thấy dữ liệu khác nhau, mặc dù chúng nằm trong một kèo bóng đá việt nam duy nhất, nếu các kèo bóng đá việt nam khác thực hiện thay đổi sau lần đầu tiênChọn
bắt đầu và trước lần thứ haiChọn
bắt đầu.
Cập nhật
,Xóa
,Chọn để cập nhật
vàChọn chia sẻ
kèo bóng đá việt nam lệnh hoạt động giống nhưChọn
Về mặt tìm kiếm các hàng mục tiêu: Họ sẽ chỉ tìm thấy các hàng mục tiêu được cam kết theo thời gian bắt đầu lệnh. Tuy nhiên, một hàng mục tiêu như vậy có thể đã được cập nhật (hoặc bị xóa hoặc bị khóa) bởi một kèo bóng đá việt nam đồng thời khác vào thời điểm nó được tìm thấy.WHERE
mệnh đề) được đánh giá lại để xem phiên bản cập nhật của hàng có phù hợp với điều kiện tìm kiếm hay không. Nếu vậy, trình cập nhật thứ hai tiến hành hoạt động của nó bằng phiên bản cập nhật của hàng.Chọn để cập nhật
vàChọn chia sẻ
, Điều này có nghĩa là phiên bản cập nhật của hàng bị khóa và trả lại cho máy khách.
Chèn
vớitrên xung đột do cập nhật
mệnh đề hoạt động tương tự. Trong chế độ đọc cam kết, mỗi hàng được đề xuất để chèn sẽ chèn hoặc cập nhật.Chèn
, TheCập nhật
mệnh đề sẽ ảnh hưởng đến hàng đó, mặc dù có thểkhôngPhiên bản của hàng đó có thể hiển thị theo lệnh.
Chèn
vớitrên xung đột không làm gì
mệnh đề có thể đã chèn không tiến hành một hàng do kết quả của một kèo bóng đá việt nam khác mà hiệu ứng không hiển thị đối vớiChèn
Ảnh chụp nhanh. Một lần nữa, đây chỉ là trường hợp trong chế độ đã cam kết.
Vì kèo bóng đá việt nam quy tắc trên, có thể một lệnh cập nhật để xem một ảnh chụp nhanh không nhất quán: Nó có thể thấy kèo bóng đá việt nam tác động của kèo bóng đá việt nam lệnh cập nhật đồng thời trên cùng một hàng mà nó đang cố gắng cập nhật, nhưng nó không thấy hiệu ứng của kèo bóng đá việt nam lệnh đó trên kèo bóng đá việt nam hàng khác trong cơ sở dữ liệu. Hành vi này làm cho chế độ cam kết không phù hợp với kèo bóng đá việt nam lệnh liên quan đến kèo bóng đá việt nam điều kiện tìm kiếm phức tạp;
Bắt đầu;
Nếu hai kèo bóng đá việt nam như vậy đồng thời cố gắng thay đổi số dư của tài khoản 12345, chúng tôi rõ ràng muốn kèo bóng đá việt nam thứ hai bắt đầu với phiên bản cập nhật của hàng tài khoản. Bởi vì mỗi lệnh chỉ ảnh hưởng đến một hàng được xác định trước, cho phép nó xem phiên bản cập nhật của hàng không tạo ra bất kỳ sự không nhất quán rắc rối nào.
Cách sử dụng phức tạp hơn có thể tạo ra kết quả không mong muốn trong chế độ đã cam kết đọc. Ví dụ: xem xét mộtXóa
lệnh hoạt động trên dữ liệu đang được thêm và xóa khỏi tiêu chí hạn chế của nó bởi một lệnh khác, ví dụ: giả sửTrang web
là bảng hai hàng vớitrang web.hits
Bình đẳng9
và10
:
Bắt đầu;
TheXóa
sẽ không có hiệu lực mặc dù cótrang web.hits = 10
Hàng trước và sauCập nhật
. Điều này xảy ra do giá trị hàng trước ngày9
bị bỏ qua và khiCập nhật
Hoàn thành vàXóa
có được khóa, giá trị hàng mới không còn10
nhưng11
, không còn khớp với kèo bóng đá việt nam tiêu chí.
Vì chế độ đã cam kết bắt đầu mỗi lệnh với một ảnh chụp nhanh mới bao gồm tất cả các kèo bóng đá việt nam được thực hiện cho đến ngay lập tức, các lệnh tiếp theo trong cùng một kèo bóng đá việt nam sẽ thấy các tác động của kèo bóng đá việt nam đồng thời đã cam kết trong mọi trường hợp. Điểm tại vấn đề ở trên là liệu có hay khôngđơnLệnh thấy một cái nhìn hoàn toàn nhất quán của cơ sở dữ liệu.
Phân lập kèo bóng đá việt nam một phần được cung cấp bởi Chế độ đã cam kết là đủ cho nhiều ứng dụng và chế độ này nhanh chóng và đơn giản để sử dụng; Tuy nhiên, nó không đủ cho tất cả các trường hợp.
TheĐọc lặp lạiMức cách ly chỉ thấy dữ liệu được cam kết trước khi kèo bóng đá việt nam bắt đầu; Nó không bao giờ thấy dữ liệu không được cam kết hoặc thay đổi đã thực hiện trong quá trình thực hiện kèo bóng đá việt nam theo các kèo bóng đá việt nam đồng thời.SQLTiêu chuẩn cho mức độ cô kèo bóng đá việt nam này và ngăn chặn tất cả các hiện tượng được mô tả trongBảng 13.1Ngoại trừ kèo bóng đá việt nam dị thường tuần tự hóa. Như đã đề cập ở trên, điều này được cho phép cụ thể bởi tiêu chuẩn, chỉ mô tảTối thiểuBảo vệ mỗi cấp độ cô kèo bóng đá việt nam phải cung cấp.
24920_25101kèo bóng đá việt nam, không phải là bắt đầu của tuyên bố hiện tại trong kèo bóng đá việt nam. Do đó, liên tiếpChọn
lệnh trong mộtđơnkèo bóng đá việt nam xem cùng một dữ liệu, tức là, họ không thấy các thay đổi được thực hiện bởi các kèo bóng đá việt nam khác đã thực hiện sau khi kèo bóng đá việt nam của chính họ bắt đầu.
Các ứng dụng sử dụng cấp độ này phải được chuẩn bị để thử lại các kèo bóng đá việt nam do lỗi tuần tự hóa.
Cập nhật
,Xóa
,Chọn để cập nhật
vàChọn chia sẻ
kèo bóng đá việt nam lệnh hoạt động giống nhưChọn
Về mặt tìm kiếm các hàng mục tiêu: Họ sẽ chỉ tìm thấy các hàng mục tiêu được thực hiện kể từ thời gian bắt đầu kèo bóng đá việt nam. Tuy nhiên, một hàng mục tiêu như vậy có thể đã được cập nhật (hoặc bị xóa hoặc bị khóa) bởi một kèo bóng đá việt nam đồng thời khác vào thời điểm nó được tìm thấy.
Lỗi: Không thể tuần tự hóa truy cập do cập nhật đồng thời
Bởi vì kèo bóng đá việt nam đọc lặp lại không thể sửa đổi hoặc khóa các hàng thay đổi bởi các kèo bóng đá việt nam khác sau khi kèo bóng đá việt nam đọc lặp lại bắt đầu.
Khi một ứng dụng nhận được thông báo lỗi này, nó sẽ hủy bỏ kèo bóng đá việt nam hiện tại và thử lại toàn bộ kèo bóng đá việt nam ngay từ đầu. Lần thứ hai qua, kèo bóng đá việt nam sẽ thấy sự thay đổi được cam kết trước đó là một phần của quan điểm ban đầu về cơ sở dữ liệu, do đó không có xung đột logic trong việc sử dụng phiên bản mới của hàng làm điểm bắt đầu cho bản cập nhật của kèo bóng đá việt nam mới.
Lưu ý rằng chỉ cập nhật các kèo bóng đá việt nam mới có thể cần phải được thử lại; Các kèo bóng đá việt nam chỉ đọc sẽ không bao giờ có xung đột tuần tự hóa.
Chế độ đọc lặp lại cung cấp một đảm bảo nghiêm ngặt mà mỗi kèo bóng đá việt nam nhìn thấy một cái nhìn hoàn toàn ổn định của cơ sở dữ liệu. Tuy nhiên, quan điểm này sẽ không nhất thiết luôn luôn phù hợp với một số lần thực hiện nối tiếp (một lần) các kèo bóng đá việt nam đồng thời cùng cấp.khôngXem một trong các bản ghi chi tiết là một phần logic của lô vì nó đọc bản sửa đổi trước đó của bản ghi điều khiển. Nỗ lực thực thi các quy tắc kinh doanh bằng các kèo bóng đá việt nam đang chạy ở cấp độ cô lập này không có khả năng hoạt động chính xác mà không sử dụng cẩn thận các khóa rõ ràng để chặn các kèo bóng đá việt nam xung đột.
Mức độ cô kèo bóng đá việt nam có thể lặp lại được triển khai bằng cách sử dụng một kỹ thuật được biết đến trong tài liệu cơ sở dữ liệu học thuật và trong một số sản phẩm cơ sở dữ liệu khác làBắn hiệu cô kèo bóng đá việt nam. Sự khác biệt về hành vi và hiệu suất có thể được quan sát khi so sánh với kèo bóng đá việt nam hệ thống sử dụng kỹ thuật khóa truyền thống làm giảm sự đồng thời.[Berenson95].
trướckèo bóng đá việt namPhiên bản 9.1, một yêu cầu cho mức cách ly kèo bóng đá việt nam có thể nối tiếp được cung cấp chính xác cùng một hành vi được mô tả ở đây. Để giữ lại hành vi có thể nối tiếp di sản, nên đọc lặp lại bây giờ nên được yêu cầu.
TheserializableMức cách ly cung cấp sự cô lập kèo bóng đá việt nam nghiêm ngặt nhất. Cấp độ này mô phỏng việc thực hiện kèo bóng đá việt nam nối tiếp cho tất cả các kèo bóng đá việt nam đã cam kết;dị thường tuần tự hóaSẽ kích hoạt AThất bại nối tiếp.
Ví dụ, hãy xem xét một bảngMyTab
, ban đầu chứa:
Lớp | giá trị
Giả sử rằng kèo bóng đá việt nam có thể nối tiếp A Tính toán:
Chọn tổng (giá trị) từ mytab trong đó lớp = 1;
và sau đó chèn kết quả (30) làgiá trị
Trong một hàng mới vớiclass
= 2
. Đồng thời, kèo bóng đá việt nam có thể nối tiếp B Tính toán:
Chọn tổng (giá trị) từ mytab trong đó lớp = 2;
và thu được kết quả 300, nó chèn vào một hàng mới vớiclass
= 1
. Sau đó, cả hai kèo bóng đá việt nam cố gắng cam kết.
Lỗi: Không thể tuần tự hóa quyền truy cập do các phụ thuộc đọc/ghi giữa các kèo bóng đá việt nam
Điều này là do nếu A đã thực hiện trước B, B sẽ tính toán tổng 330, không phải 300, và tương tự, thứ tự khác sẽ dẫn đến một khoản tiền khác được tính bởi A.
Khi dựa vào các kèo bóng đá việt nam có thể nối tiếp để ngăn chặn sự bất thường, điều quan trọng là bất kỳ dữ liệu nào được đọc từ bảng người dùng vĩnh viễn không được coi là hợp lệ cho đến khi kèo bóng đá việt nam đọc thành công. Điều này đúng ngay cả đối với các kèo bóng đá việt nam chỉ đọc, ngoại trừ dữ liệu đó được đọc trong mộtcó thể bảo vệkèo bóng đá việt nam chỉ đọc được biết là có hiệu lực ngay khi đọc, bởi vì một kèo bóng đá việt nam đó chờ đợi cho đến khi nó có thể có được một ảnh chụp nhanh được đảm bảo là không có vấn đề như vậy trước khi bắt đầu đọc bất kỳ dữ liệu nào. Trong tất cả các trường hợp khác, các ứng dụng không được phụ thuộc vào kết quả đọc trong một kèo bóng đá việt nam sau đó bị hủy bỏ;
Để đảm bảo khả năng nối tiếp thực sựkèo bóng đá việt namsử dụngkhóa dự đoán, có nghĩa là nó giữ các khóa cho phép nó xác định khi nào một bản ghi sẽ có tác động đến kết quả của việc đọc trước đó từ một kèo bóng đá việt nam đồng thời, nó đã chạy trước. TRONGkèo bóng đá việt namNhững khóa này không gây ra bất kỳ chặn nào và do đó có thểkhôngChơi bất kỳ phần nào trong việc gây bế tắc. Chúng được sử dụng để xác định và gắn cờ các phụ thuộc giữa các kèo bóng đá việt nam nối tiếp đồng thời mà trong một số kết hợp nhất định có thể dẫn đến các bất thường tuần tự hóa.Chọn để cập nhật
hoặcChọn để chia sẻ
Điều này không chỉ có thể chặn các kèo bóng đá việt nam khác mà còn gây ra truy cập đĩa.
Khóa vị ngữ trongkèo bóng đá việt nam, giống như trong hầu hết các hệ thống cơ sở dữ liệu khác, dựa trên dữ liệu thực sự được truy cập bởi một kèo bóng đá việt nam. Chúng sẽ xuất hiện trongpg_locks
Chế độ xem hệ thống với AMode
củaSireadlock
. Các khóa cụ thể có được trong quá trình thực hiện truy vấn sẽ phụ thuộc vào kế hoạch được sử dụng bởi truy vấn và nhiều khóa hạt mịn hơn (ví dụ: khóa tuple) có thể được kết hợp thành ít khóa hạt hơn (ví dụ, khóa trang) trong quá trình kèo bóng đá việt nam để ngăn chặn sự cạn kiệt của bộ nhớ được sử dụng để theo dõi khóa.Chỉ đọc
kèo bóng đá việt nam có thể có thể phát hành khóa Siread trước khi hoàn thành, nếu phát hiện rằng không có xung đột nào vẫn có thể xảy ra có thể dẫn đến sự bất thường của tuần tự hóa. Trong thực tế,Chỉ đọc
kèo bóng đá việt nam thường có thể thiết lập thực tế đó khi khởi động và tránh thực hiện bất kỳ khóa dự đoán nào. Nếu bạn yêu cầu rõ ràngserializable chỉ đọc bảo trì
kèo bóng đá việt nam, nó sẽ chặn cho đến khi nó có thể thiết lập thực tế này. (Đây làchỉTrường hợp khối kèo bóng đá việt nam có thể nối tiếp nhưng các kèo bóng đá việt nam đọc lặp lại không.) Mặt khác, khóa Siread thường cần phải được giữ quá trình kèo bóng đá việt nam trong quá khứ, cho đến khi kết thúc kèo bóng đá việt nam ghi kết thúc.
Sử dụng nhất quán các kèo bóng đá việt nam có thể nối tiếp có thể đơn giản hóa sự phát triển. Đảm bảo rằng bất kỳ bộ kèo bóng đá việt nam hàng loạt có thể thực hiện đồng thời có thể thực hiện thành công sẽ có tác dụng tương tự như khi chúng được chạy tại một thời điểm có nghĩa là nếu bạn có thể chứng minh rằng một kèo bóng đá việt nam duy nhất, như đã viết, sẽ làm đúng khi tự mình thực hiện, bạn có thể tự tin rằng nó sẽ không thành công.Chọn để cập nhật
hoặcChọn chia sẻ
, kèo bóng đá việt nam có thể nối tiếp là lựa chọn hiệu suất tốt nhất cho một số môi trường.
trong khikèo bóng đá việt namMức cách ly kèo bóng đá việt nam có thể nối tiếp chỉ cho phép các kèo bóng đá việt nam đồng thời thực hiện nếu nó có thể chứng minh rằng có một thứ tự thực thi nối tiếp sẽ tạo ra hiệu ứng tương tự, nó không luôn luôn ngăn chặn các lỗi được nêu ra trong việc thực hiện nối tiếp thực sự. Cụ thể, có thể thấy các vi phạm ràng buộc độc đáo gây ra bởi xung đột với các kèo bóng đá việt nam có thể nối tiếp chồng chéo ngay cả sau khi kiểm tra rõ ràng rằng khóa không có trước khi cố gắng chèn nó.tất cảCác kèo bóng đá việt nam có thể nối tiếp chèn các khóa có khả năng mâu thuẫn kiểm tra rõ ràng xem chúng có thể làm như vậy trước không. Ví dụ: hãy tưởng tượng một ứng dụng yêu cầu người dùng cho một khóa mới và sau đó kiểm tra xem nó chưa tồn tại bằng cách cố gắng chọn nó trước hoặc tạo khóa mới bằng cách chọn khóa tối đa hiện có và thêm một khóa.
Để thực hiện tối ưu khi dựa vào các kèo bóng đá việt nam có thể nối tiếp để kiểm soát đồng thời, những vấn đề này sẽ được xem xét:
Khai báo kèo bóng đá việt nam làChỉ đọc
khi có thể.
Kiểm soát số lượng kết nối hoạt động, sử dụng nhóm kết nối nếu cần. Đây luôn là một sự xem xét hiệu suất quan trọng, nhưng nó có thể đặc biệt quan trọng trong một hệ thống bận rộn bằng cách sử dụng các kèo bóng đá việt nam có thể nối tiếp.
Đừng đặt nhiều hơn vào một kèo bóng đá việt nam duy nhất cần thiết cho mục đích toàn vẹn.
Không để lại kết nốinhàn rỗi trong kèo bóng đá việt namdài hơn mức cần thiết. Tham số cấu hìnhidle_in_transaction_session_timeoutCó thể được sử dụng để tự động ngắt kết nối kèo bóng đá việt nam phiên kéo dài.
Loại bỏ kèo bóng đá việt nam khóa rõ ràng,Chọn để cập nhật
vàChọn chia sẻ
nơi không còn cần thiết do các biện pháp bảo vệ tự động được cung cấp bởi các kèo bóng đá việt nam có thể nối tiếp.
Khi hệ thống bị buộc phải kết hợp nhiều khóa dự đoán cấp độ trang thành một khóa định vị cấp độ quan hệ duy nhất vì bảng khóa dự đoán thiếu bộ nhớ, có thể xảy ra tốc độ thất bại tuần tự hóa. Bạn có thể tránh điều này bằng cách tăngMAX_PRED_LOCKS_PER_TRANSACTION,MAX_PRED_LOCKS_PER_RELATION, và/hoặcMAX_PRED_LOCKS_PER_PAGE.
Quét tuần tự sẽ luôn cần một khóa dự đoán cấp độ quan hệ. Điều này có thể dẫn đến tăng tỷ lệ thất bại tuần tự hóa.ngẫu nhiên_page_costvà/hoặc tăngCPU_Tuple_Cost. Hãy chắc chắn cân nhắc mọi sự sụt giảm trong các cuộc chạy lại kèo bóng đá việt nam và khởi động lại so với bất kỳ thay đổi tổng thể nào trong thời gian thực hiện truy vấn.
Mức độ cô kèo bóng đá việt nam có thể nối tiếp được thực hiện bằng cách sử dụng một kỹ thuật được biết đến trong tài liệu cơ sở dữ liệu học thuật là cách ly ảnh chụp nhanh có thể nối tiếp, xây dựng dựa trên sự cô kèo bóng đá việt nam bằng cách thêm kiểm tra cho các bất thường. Một số khác biệt về hành vi và hiệu suất có thể được quan sát khi so sánh với các hệ thống khác sử dụng kỹ thuật khóa truyền thống.[Ports12]Để biết thông tin chi tiết.
Nếu bạn thấy bất cứ điều gì trong tài liệu không chính xác, không phù hợpMẫu nàyĐể báo cáo vấn đề tài liệu.