TheSQLTiêu chuẩn xác định bốn cấp độ cô lập tỷ lệ kèo bóng đá tối nay. 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 tỷ lệ kèo bóng đá tối nay 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ự. Ba cấp độ khác được xác định theo các hiện tượng, do sự tương tác giữa các tỷ lệ kèo bóng đá tối nay đồng thời, không phải xảy ra ở mỗi cấp. Các ghi chú tiêu chuẩn rằng do định nghĩa của serializable, không có hiện tượng nào trong số này có thể ở cấp độ đó. .
Hiện tượng bị cấm ở tỷ lệ kèo bóng đá tối nay cấp độ khác nhau là:
Một tỷ lệ kèo bóng đá tối nay đọc dữ liệu được viết bởi một tỷ lệ kèo bóng đá tối nay không cam kết đồng thời.
Một tỷ lệ kèo bóng đá tối nay đọ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 tỷ lệ kèo bóng đá tối nay khác (được cam kết kể từ lần đọc ban đầu).
13021_13227
Kết quả của việc thực hiện thành công một nhóm tỷ lệ kèo bóng đá tối nay không phù hợp với tất cả các thứ tự có thể chạy các tỷ lệ kèo bóng đá tối nay đó cùng một lúc.
Mức độ cách ly tỷ lệ kèo bóng đá tối nay đượ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 tỷ lệ kèo bóng đá tối nay
Cấp độ cô tỷ lệ kèo bóng đá tối nay | đọc bẩn | không thể lặp lại đọc | Phantom Read | Sự bất thường của 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ể |
inPostgreSQL, bạn có thể yêu cầu bất kỳ cấp độ nào trong bốn cấp độ phân lập tỷ lệ kèo bóng đá tối nay 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 PostgreSQL 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ô lập nhất định; Đảm bảo cao hơn là chấp nhận được. Hành vi của tỷ lệ kèo bóng đá tối nay cấp độ cô lập có sẵn được trình bày chi tiết trong tỷ lệ kèo bóng đá tối nay tiểu mục sau.
Để đặt mức cách ly tỷ lệ kèo bóng đá tối nay của tỷ lệ kèo bóng đá tối nay, sử dụng lệnhĐặt tỷ lệ kèo bóng đá tối nay.
Một sốPostgreSQLCác loại dữ liệu và chức năng có các quy tắc đặc biệt liên quan đến hành vi tỷ lệ kèo bóng đá tối nay. 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ụngsê -ri
) ngay lập tức hiển thị cho tất cả các tỷ lệ kèo bóng đá tối nay khác và không được quay lại nếu tỷ lệ kèo bóng đá tối nay 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à cấp độ cô tỷ lệ kèo bóng đá tối nay mặc định trongPostgreSQL. Khi một tỷ lệ kèo bóng đá tối nay 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 bởi các tỷ lệ kèo bóng đá tối nay đồng thời trong quá trình thực hiện truy vấn. Trong thực tế, AChọn
Truy vấn thấy một ảnh chụp nhanh của 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 hiệu ứng của các bản cập nhật trước được thực hiện trong tỷ lệ kèo bóng đá tối nay 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ể xem dữ liệu khác nhau, mặc dù chúng nằm trong một tỷ lệ kèo bóng đá tối nay duy nhất, nếu các tỷ lệ kèo bóng đá tối nay 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ẻ
tỷ lệ kèo bóng đá tối nay 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 tỷ lệ kèo bóng đá tối nay đồng thời khác vào thời điểm nó được tìm thấy. Trong trường hợp này, người cập nhật sẽ chờ đợi tỷ lệ kèo bóng đá tối nay cập nhật đầu tiên cam kết hoặc quay lại (nếu nó vẫn đang được tiến hành). Nếu trình cập nhật đầu tiên quay trở lại, thì các hiệu ứng của nó bị phủ định và trình cập nhật thứ hai có thể tiến hành cập nhật hàng được tìm thấy ban đầu. Nếu người cập nhật đầu tiên cam kết, trình cập nhật thứ hai sẽ bỏ qua hàng nếu trình cập nhật đầu tiên đã xóa nó, nếu không nó sẽ cố gắng áp dụng hoạt động của nó vào phiên bản cập nhật của hàng. Điều kiện tìm kiếm của lệnh (TheWHERE
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. Trong trường hợp củaChọ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ớiVề 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. Trừ khi có các lỗi không liên quan, một trong hai kết quả đó được đảm bảo. Nếu một cuộc xung đột bắt nguồn từ một tỷ lệ kèo bóng đá tối nay khác mà các hiệu ứng chưa được hiển thị đối vớiChè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 tỷ lệ kèo bóng đá tối nay khác mà các 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.
Hợp nhất
Cho phép người dùng chỉ định tỷ lệ kèo bóng đá tối nay kết hợp khác nhau củaINSERT
, Cập nhật
vàXóa
tiểu ban. MỘTHợp nhất
lệnh với cả haiChèn
vàCập nhật
tỷ lệ kèo bóng đá tối nay tiểu ban trông giống nhưChèn
vớiVề xung đột do cập nhật
mệnh đề nhưng không đảm bảo rằngChèn
hoặcCập nhật
sẽ xảy ra. Nếu nhưHợp nhất
cố gắngCập nhật
hoặcXóa
Và hàng được cập nhật đồng thời nhưng điều kiện tham gia vẫn truyền cho mục tiêu hiện tại và bộ nguồn nguồn hiện tại, sau đóHợp nhất
sẽ hành xử giống nhưCập nhật
hoặcXóa
tỷ lệ kèo bóng đá tối nay lệnh và thực hiện hành động của nó trên phiên bản cập nhật của hàng. Tuy nhiên, vìHợp nhất
Có thể chỉ định một số hành động và chúng có thể có điều kiện, tỷ lệ kèo bóng đá tối nay điều kiện cho mỗi hành động được đánh giá lại trên phiên bản cập nhật của hàng, bắt đầu từ hành động đầu tiên, ngay cả khi hành động ban đầu phù hợp xuất hiện sau đó trong danh sách tỷ lệ kèo bóng đá tối nay hành động. Mặt khác, nếu hàng được cập nhật hoặc xóa đồng thời để điều kiện tham gia không thành công, thìHợp nhất
sẽ đánh giá điều kiệnkhông khớp
Hành động tiếp theo và thực hiện lần đầu tiên thành công. Nếu nhưHợp nhất
cố gắngChèn
và có một chỉ mục duy nhất có mặt và một hàng trùng lặp được chèn đồng thời, sau đó một lỗi vi phạm duy nhất được nêu ra;Hợp nhất
Không cố gắng tránh tỷ lệ kèo bóng đá tối nay lỗi như vậy bằng cách khởi động lại đánh giáphù hợp
Điều kiện.
Vì các quy tắc trên, có thể một lệnh cập nhật để xem ảnh chụp không phù hợp: Nó có thể thấy các hiệu ứng của các 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 các lệnh đó trên các 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 các lệnh liên quan đến các điều kiện tìm kiếm phức tạp; Tuy nhiên, nó chỉ là đúng cho các trường hợp đơn giản hơn. Ví dụ: xem xét cập nhật số dư ngân hàng với các tỷ lệ kèo bóng đá tối nay như:
Bắt đầu; Cập nhật tài khoản đặt số dư = số dư + 100.00 trong đó acctnum = 12345; Cập nhật tài khoản đặt số dư = số dư - 100.00 trong đó acctnum = 7534; LÀM;
Nếu hai tỷ lệ kèo bóng đá tối nay 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 tỷ lệ kèo bóng đá tối nay 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ằng9
và10
:
Bắt đầu; Cập nhật trang web đặt hit = lượt truy cập + 1; - Chạy từ một phiên khác: Xóa khỏi trang web trong đó tỷ lệ kèo bóng đá tối nay lượt truy cập = 10; LÀM;
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 tỷ lệ kèo bóng đá tối nay 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 tỷ lệ kèo bóng đá tối nay được thực hiện cho đến các lệnh tiếp theo, trong cùng một tỷ lệ kèo bóng đá tối nay sẽ thấy các tác động của tỷ lệ kèo bóng đá tối nay đồ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 tỷ lệ kèo bóng đá tối nay 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. Các ứng dụng thực hiện các truy vấn và cập nhật phức tạp có thể yêu cầu một cái nhìn nhất quán nghiêm ngặt hơn về cơ sở dữ liệu so với Chế độ đã cam kết cung cấp.
TheĐọc lặp lạiMức cách ly chỉ thấy dữ liệu được cam kết trước khi tỷ lệ kèo bóng đá tối nay 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 bởi các tỷ lệ kèo bóng đá tối nay đồng thời trong quá trình thực hiện tỷ lệ kèo bóng đá tối nay. .SQLTiêu chuẩn cho mức độ cô lập này và ngăn chặn tất cả tỷ lệ kèo bóng đá tối nay hiện tượng được mô tả trongBảng 13.1Ngoại trừ tỷ lệ kèo bóng đá tối nay 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ô tỷ lệ kèo bóng đá tối nay phải cung cấp.
27312_27493tỷ lệ kèo bóng đá tối nay, không phải là bắt đầu câu lệnh hiện tại trong tỷ lệ kèo bóng đá tối nay. Do đó, liên tiếpChọn
lệnh trong mộtđơntỷ lệ kèo bóng đá tối nay xem cùng một dữ liệu, tức là, họ không thấy những thay đổi được thực hiện bởi các tỷ lệ kèo bóng đá tối nay khác đã thực hiện sau khi tỷ lệ kèo bóng đá tối nay 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 tỷ lệ kèo bóng đá tối nay do lỗi tuần tự hóa.
Cập nhật
, Xóa
, Hợp nhất
, Chọn để cập nhật
vàChọn chia sẻ
tỷ lệ kèo bóng đá tối nay 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 tỷ lệ kèo bóng đá tối nay. 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 tỷ lệ kèo bóng đá tối nay đồng thời khác vào thời điểm nó được tìm thấy. Trong trường hợp này, tỷ lệ kèo bóng đá tối nay đọc lặp lại sẽ chờ tỷ lệ kèo bóng đá tối nay cập nhật đầu tiên cam kết hoặc quay lại (nếu nó vẫn đang được tiến hành). Nếu trình cập nhật đầu tiên quay trở lại, thì các hiệu ứng của nó bị phủ định và tỷ lệ kèo bóng đá tối nay đọc lặp lại có thể tiến hành cập nhật hàng ban đầu được tìm thấy. Nhưng nếu người cập nhật đầu tiên cam kết (và thực sự được cập nhật hoặc xóa hàng, không chỉ khóa nó) thì tỷ lệ kèo bóng đá tối nay đọc lặp lại sẽ được quay lại với thông báo
Lỗi: Không thể tuần tự hóa truy cập do cập nhật đồng thời
Bởi vì tỷ lệ kèo bóng đá tối nay đọ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 tỷ lệ kèo bóng đá tối nay khác sau khi tỷ lệ kèo bóng đá tối nay đọ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ỏ tỷ lệ kèo bóng đá tối nay hiện tại và thử lại toàn bộ tỷ lệ kèo bóng đá tối nay ngay từ đầu. Lần thứ hai qua, tỷ lệ kèo bóng đá tối nay 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 tỷ lệ kèo bóng đá tối nay mới.
Lưu ý rằng chỉ cập nhật các tỷ lệ kèo bóng đá tối nay có thể cần phải được thử lại; Các tỷ lệ kèo bóng đá tối nay 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 tỷ lệ kèo bóng đá tối nay 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 tỷ lệ kèo bóng đá tối nay đồng thời cùng cấp. Ví dụ: ngay cả một tỷ lệ kèo bóng đá tối nay chỉ đọc ở cấp độ này cũng có thể thấy bản ghi kiểm soát được cập nhật để cho thấy rằng một lô đã được hoàn thành nhưngkhô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 tỷ lệ kèo bóng đá tối nay đ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 tỷ lệ kèo bóng đá tối nay xung đột.
Mức độ cô tỷ lệ kèo bóng đá tối nay 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ô tỷ lệ kèo bóng đá tối nay. 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 tỷ lệ kèo bóng đá tối nay hệ thống sử dụng kỹ thuật khóa truyền thống làm giảm sự đồng thời. Một số hệ thống khác thậm chí có thể cung cấp sự cô lập đọc và nhanh chóng có thể lặp lại như tỷ lệ kèo bóng đá tối nay mức độ cô lập khác biệt với tỷ lệ kèo bóng đá tối nay hành vi khác nhau. tỷ lệ kèo bóng đá tối nay hiện tượng được phép phân biệt hai kỹ thuật không được chính thức hóa bởi tỷ lệ kèo bóng đá tối nay nhà nghiên cứu cơ sở dữ liệu cho đến sau khi tiêu chuẩn SQL được phát triển và nằm ngoài phạm vi của hướng dẫn này. Để được điều trị đầy đủ, vui lòng xem[Berenson95].
trướcPostgreSQLPhiên bản 9.1, một yêu cầu về mức cách ly tỷ lệ kèo bóng đá tối nay 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 tỷ lệ kèo bóng đá tối nay nghiêm ngặt nhất. Cấp độ này mô phỏng việc thực hiện tỷ lệ kèo bóng đá tối nay nối tiếp cho tất cả các tỷ lệ kèo bóng đá tối nay đã cam kết; Như thể các tỷ lệ kèo bóng đá tối nay đã được thực hiện lần lượt, một cách thường xuyên, thay vì đồng thời. Tuy nhiên, giống như mức đọc lặp lại, các ứng dụng sử dụng cấp độ này phải được chuẩn bị để thử lại các tỷ lệ kèo bóng đá tối nay do lỗi tuần tự hóa. Trên thực tế, mức độ cô lập này hoạt động hoàn toàn giống như đọc lặp lại ngoại trừ việc nó cũng theo dõi các điều kiện có thể thực hiện một tập hợp các tỷ lệ kèo bóng đá tối nay tuần tự hóa có thể hoạt động theo cách không phù hợp với tất cả các tỷ lệ kèo bóng đá tối nay đó có thể có (một lần) thực hiện các tỷ lệ kèo bóng đá tối nay đó. Giám sát này không giới thiệu bất kỳ sự chặn nào ngoài việc đọc lặp lại, nhưng có một số chi phí cho giám sát và phát hiện các điều kiện có thể gây raSự bất thường của tuần tự hóaSẽ kích hoạt AThất bại nối tiếp.
làm ví dụ, hãy xem xét một bảngMyTab
, ban đầu chứa:
Lớp | giá trị -------+------- 1 | 10 1 | 20 2 | 100 2 | 200
Giả sử rằng tỷ lệ kèo bóng đá tối nay 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, tỷ lệ kèo bóng đá tối nay 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 tỷ lệ kèo bóng đá tối nay cố gắng cam kết. Nếu một trong hai tỷ lệ kèo bóng đá tối nay đang chạy ở cấp độ cô lập lặp lại, cả hai sẽ được phép cam kết; Nhưng vì không có thứ tự thực hiện nối tiếp phù hợp với kết quả, sử dụng các tỷ lệ kèo bóng đá tối nay có thể nối tiếp sẽ cho phép một tỷ lệ kèo bóng đá tối nay cam kết và sẽ quay lại với thông báo này:
Lỗi: Không thể tuần tự hóa quyền truy cập do phụ thuộc đọc/ghi giữa các tỷ lệ kèo bóng đá tối nay
34539_34712
Khi dựa vào các tỷ lệ kèo bóng đá tối nay 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 tỷ lệ kèo bóng đá tối nay đọc nó đã cam kết thành công. Điều này đúng ngay cả đối với các tỷ lệ kèo bóng đá tối nay chỉ đọc, ngoại trừ dữ liệu đó được đọc trong mộtcó thể hoãn lạitỷ lệ kèo bóng đá tối nay chỉ đọc được biết là có hiệu lực ngay khi đọc, bởi vì một tỷ lệ kèo bóng đá tối nay đó 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 tỷ lệ kèo bóng đá tối nay sau đó bị hủy bỏ; Thay vào đó, họ nên thử lại tỷ lệ kèo bóng đá tối nay cho đến khi nó thành công.
Để đảm bảo khả năng nối tiếp thực sựPostgreSQLsử dụngKhóa vị ngữ, 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 tỷ lệ kèo bóng đá tối nay đồng thời, đã chạy trước. TRONGPOSTGRESQLNhữ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 tỷ lệ kèo bóng đá tối nay 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. Ngược lại, tỷ lệ kèo bóng đá tối nay đọc đã đọc hoặc lặp lại có thể đảm bảo tính nhất quán dữ liệu có thể cần phải rút khóa trên toàn bộ bảng, có thể chặn những người dùng khác đang cố gắng sử dụng bảng đó hoặc nó có thể sử dụngChọn để cập nhật
hoặcChọn chia sẻ
Điều này không chỉ có thể chặn các tỷ lệ kèo bóng đá tối nay khác mà còn gây ra truy cập đĩa.
Khóa vị ngữ trongPostgreSQL, 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 tỷ lệ kèo bóng đá tối nay. 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 tỷ lệ kèo bóng đá tối nay để ngăn chặn sự cạn kiệt của bộ nhớ được sử dụng để theo dõi khóa. MỘTChỉ đọc
tỷ lệ kèo bóng đá tối nay 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
tỷ lệ kèo bóng đá tối nay 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ì
tỷ lệ kèo bóng đá tối nay, 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 tỷ lệ kèo bóng đá tối nay có thể nối tiếp nhưng các tỷ lệ kèo bóng đá tối nay đọc lặp lại không.) Mặt khác, khóa Sriead thường cần được giữ quá trình tỷ lệ kèo bóng đá tối nay trong quá khứ, cho đến khi kết thúc tỷ lệ kèo bóng đá tối nay ghi kết thúc.
Sử dụng nhất quán các tỷ lệ kèo bóng đá tối nay 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ộ tỷ lệ kèo bóng đá tối nay 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 tỷ lệ kèo bóng đá tối nay 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. Điều quan trọng là một môi trường sử dụng kỹ thuật này có cách xử lý các lỗi tuần tự hóa tổng quát (luôn quay trở lại với giá trị SQLSTATE là '40001'), bởi vì sẽ rất khó để dự đoán chính xác các tỷ lệ kèo bóng đá tối nay nào có thể đóng góp vào các phụ thuộc đọc/ghi và cần phải được chuyển trở lại để ngăn chặn sự bất thường. Việc giám sát các phụ thuộc đọc/ghi có chi phí, cũng như việc khởi động lại các tỷ lệ kèo bóng đá tối nay bị chấm dứt với lỗi tuần tự hóa, nhưng cân bằng với chi phí và chặn liên quan đến việc sử dụng các khóa rõ ràng vàChọn để cập nhật
hoặcChọn chia sẻ
, tỷ lệ kèo bóng đá tối nay 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 khiPOSTGRESQLMức cách ly tỷ lệ kèo bóng đá tối nay có thể nối tiếp chỉ cho phép các tỷ lệ kèo bóng đá tối nay đồng thời thực hiện nếu nó có thể chứng minh rằng có một thứ tự thực hiện nối tiếp sẽ tạo ra hiệu ứng tương tự, nó không phải lúc nào cũng ngăn chặn các lỗi không xảy 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 tỷ lệ kèo bóng đá tối nay 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ó. Điều này có thể tránh được bằng cách đảm bảo rằngtất cảCác tỷ lệ kèo bóng đá tối nay 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. Nếu một số tỷ lệ kèo bóng đá tối nay có thể nối tiếp chèn các khóa mới trực tiếp mà không tuân theo giao thức này, các ràng buộc duy nhất có thể được báo cáo ngay cả trong trường hợp chúng không thể xảy ra trong việc thực hiện nối tiếp các tỷ lệ kèo bóng đá tối nay đồng thời.
Để có hiệu suất tối ưu khi dựa vào các tỷ lệ kèo bóng đá tối nay 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 tỷ lệ kèo bóng đá tối nay 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 tỷ lệ kèo bóng đá tối nay có thể nối tiếp.
Đừng đặt nhiều hơn vào một tỷ lệ kèo bóng đá tối nay 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 tỷ lệ kèo bóng đá tối nayHàngdà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 tỷ lệ kèo bóng đá tối nay phiên kéo dài.
Loại bỏ tỷ lệ kèo bóng đá tối nay khóa rõ ràng,Chọn để cập nhật
vàChọn để chia sẻ
Trong trường hợp 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 tỷ lệ kèo bóng đá tối nay có thể nối tiếp.
Khi hệ thống buộc phải kết hợp tỷ lệ kèo bóng đá tối nay khóa dự đoán cấp độ nhiều 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. Có thể hữu ích để khuyến khích việc sử dụng quét chỉ mục bằng cách giảmngẫ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 tỷ lệ kèo bóng đá tối nay 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ách cô lập 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ô lập bằng cách thêm kiểm tra tỷ lệ kèo bóng đá tối nay 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 tỷ lệ kèo bóng đá tối nay hệ thống khác sử dụng kỹ thuật khóa truyền thống. Vui lòng xem[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 khớp Kinh nghiệm của bạn với tính năng cụ thể hoặc yêu cầu làm rõ thêm, Vui lòng sử dụngMẫu nàyĐể báo cáo vấn đề tài liệu.