PostgreSQL: kèo chấp bóng đá | |||
---|---|---|---|
prev | UP | Chương 13. Kiểm soát đồng thời | Tiếp theo |
TheSQLTiêu chuẩn xác định bốn cấp độ cô lập kèo bóng đá hôm nay và ngày mai. 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 đá hôm nay và ngày mai 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 kèo bóng đá hôm nay và ngày mai đồ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 ở kèo bóng đá hôm nay và ngày mai cấp độ khác nhau là:
Một kèo bóng đá hôm nay và ngày mai đọc dữ liệu được viết bởi một kèo bóng đá hôm nay và ngày mai không cam kết đồng thời.
Một kèo bóng đá hôm nay và ngày mai đọ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 đá hôm nay và ngày mai khác (được cam kết kể từ lần đọc ban đầu).
Một kèo bóng đá hôm nay và ngày mai tái hiện một truy vấn trả về một tập hợp 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 đá hôm nay và ngày mai được cam kết gần đây.
Bốn mức cách ly kèo bóng đá hôm nay và ngày mai và các hành vi tương ứng được mô tả trongBảng 13-1.
Bảng 13-1. Tiêu chuẩnSQLCấp độ cô lập kèo bóng đá hôm nay và ngày mai
Cấp độ cô lập | đọc bẩn | Đọc không lặp lại | Phantom Read |
---|---|---|---|
Đọc không được cam kết | Có thể | có thể | có thể |
Đọc cam kết | Không thể | có thể | có thể |
Đọc lặp lại | Không thể | Không thể | có thể |
serializable | Không thể | Không thể | Không thể |
inPostgreSQL, bạn có thể yêu cầu bất kỳ trong số bốn cấp độ phân lập kèo bóng đá hôm nay và ngày mai tiêu chuẩn. Nhưng bên trong, chỉ có ba mức cách ly riêng biệt, tương ứng với các cấp độ đọc cam kết, đọc lặp lại và có thể nối tiếp. Khi bạn chọn cấp độ đọc không được cam kết, bạn thực sự được đọc và không thể đọc được trong Phantom trongPostgreSQLThực hiện đọc lặp lại, vì vậy mức độ cô lập thực tế có thể chặt chẽ hơn những gì bạn chọn. Điều này được cho phép theo tiêu chuẩn SQL: Bốn mức cách ly chỉ xác định hiện tượng nào không được xảy ra, chúng không xác định hiện tượng nào phải xảy ra. Lý do đóPostgreSQLChỉ cung cấp ba cấp độ cô lập là đây là cách hợp lý duy nhất để ánh xạ kèo bóng đá hôm nay và ngày mai mức cách ly tiêu chuẩn cho kiến trúc kiểm soát đồng thời đa dạng. Hành vi của kèo bóng đá hôm nay và ngày mai cấp độ cô lập có sẵn được trình bày chi tiết trong kèo bóng đá hôm nay và ngày mai tiểu mục sau.
Để đặt mức cách ly kèo bóng đá hôm nay và ngày mai của kèo bóng đá hôm nay và ngày mai, sử dụng lệnhĐặt kèo bóng đá hôm nay và ngày mai.
quan trọng:kèo bóng đá hôm nay và ngày mai sốPostgreSQLCác loại 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 đá hôm nay và ngày mai. 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 kèo bóng đá hôm nay và ngày mai khác và không được quay lại nếu kèo bóng đá hôm nay và ngày mai thực hiện các thay đổi bị hủy bỏ. Nhìn thấyPhần 9.16vàPhần 8.1.4.
Đọc cam kếtlà mức cách ly mặc định trongPostgreSQL. Khi một kèo bóng đá hôm nay và ngày mai sử dụng cấp độ cô lập này, mộtChọnTruy vấn (không cóđể cập nhật/chia sẻ15353_15536ChọnTruy vấn thấy kèo bóng đá hôm nay và ngày mai ả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ọnKhông thấy các tác động của các bản cập nhật trước đó được thực hiện trong kèo bóng đá hôm nay và ngày mai 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ọnCác lệnh có thể xem dữ liệu khác nhau, mặc dù chúng nằm trong một kèo bóng đá hôm nay và ngày mai duy nhất, nếu các kèo bóng đá hôm nay và ngày mai khác thực hiện thay đổi sau lần đầu tiênChọnbắt đầu và trước lần thứ haiChọnbắt đầu.
Cập nhật, Xóa, Chọn để cập nhậtvàChọn chia sẻkèo bóng đá hôm nay và ngày mai lệnh hoạt động giống nhưChọnVề 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 đá hôm nay và ngày mai đồ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 kèo bóng đá hôm nay và ngày mai 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 (TheWHEREmệ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ậtvà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.
Vì quy tắc trên, có thể cho một lệnh cập nhật để xem ảnh chụp nhanh không nhất quán: 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 kèo bóng đá hôm nay và ngày mai 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 kèo bóng đá hôm nay và ngày mai 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 đá hôm nay và ngày mai 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 kèo bóng đá hôm nay và ngày maiXóalệ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 kèo bóng đá hôm nay và ngày mai lệnh khác, ví dụ: giả sửTrang weblà bảng hai hàng vớitrang web.hitsBình đẳng9và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 đó kèo bóng đá hôm nay và ngày mai lượt truy cập = 10; LÀM;
TheXóasẽ không có hiệu lực mặc dù cótrang web.hits = 10hàng trước và sauCập nhật. Điều này xảy ra do giá trị hàng trước ngày9bị bỏ qua và khiCập nhậtHoàn thành vàXóacó được khóa, giá trị hàng mới không còn10nhưng11, không còn khớp với kèo bóng đá hôm nay và ngày mai tiêu chí.
19608_19902đơnLệnh thấy kèo bóng đá hôm nay và ngày mai 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 đá hôm nay và ngày mai 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 kèo bóng đá hôm nay và ngày mai 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 đá hôm nay và ngày mai theo các kèo bóng đá hôm nay và ngày mai đồng thời. .SQLTiêu chuẩn cho mức độ cô lập này và ngăn chặn tất cả kèo bóng đá hôm nay và ngày mai hiện tượng được mô tả trongBảng 13-1. 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ô lập phải cung cấp.
21316_21450kèo bóng đá hôm nay và ngày mai, không phải là bắt đầu truy vấn hiện tại trong kèo bóng đá hôm nay và ngày mai. Do đó, liên tiếpChọnlệnh trong kèo bóng đá hôm nay và ngày maiđơnkèo bóng đá hôm nay và ngày mai 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 kèo bóng đá hôm nay và ngày mai khác đã thực hiện sau khi kèo bóng đá hôm nay và ngày mai 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 đá hôm nay và ngày mai do lỗi tuần tự hóa.
Cập nhật, Xóa, Chọn để cập nhậtvàChọn để chia sẻkèo bóng đá hôm nay và ngày mai lệnh hoạt động giống nhưChọnVề 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 đá hôm nay và ngày mai. 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 đá hôm nay và ngày mai đồng thời khác vào thời điểm nó được tìm thấy. Trong trường hợp này, kèo bóng đá hôm nay và ngày mai đọc lặp lại sẽ chờ kèo bóng đá hôm nay và ngày mai 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à kèo bóng đá hôm nay và ngày mai đọ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ì kèo bóng đá hôm nay và ngày mai đọ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ì kèo bóng đá hôm nay và ngày mai đọ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 đá hôm nay và ngày mai khác sau khi kèo bóng đá hôm nay và ngày mai đọ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 đá hôm nay và ngày mai hiện tại và thử lại toàn bộ kèo bóng đá hôm nay và ngày mai ngay từ đầu. Lần thứ hai qua, kèo bóng đá hôm nay và ngày mai 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 đá hôm nay và ngày mai mới.
Lưu ý rằng chỉ cập nhật các kèo bóng đá hôm nay và ngày mai có thể cần phải được thử lại; Các kèo bóng đá hôm nay và ngày mai 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 đá hôm nay và ngày mai 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 đá hôm nay và ngày mai đồng thời cùng cấp. Ví dụ: ngay cả một kèo bóng đá hôm nay và ngày mai 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 kèo bóng đá hôm nay và ngày mai đ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 đá hôm nay và ngày mai xung đột.
Lưu ý:trướcPostgreSQLPhiên bản 9.1, một yêu cầu về mức cách ly kèo bóng đá hôm nay và ngày mai 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 đá hôm nay và ngày mai nghiêm ngặt nhất. Cấp độ này mô phỏng việc thực hiện kèo bóng đá hôm nay và ngày mai nối tiếp cho tất cả các kèo bóng đá hôm nay và ngày mai đã cam kết; Như thể các kèo bóng đá hôm nay và ngày mai đã đượ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 kèo bóng đá hôm nay và ngày mai 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 theo dõi các điều kiện có thể thực hiện một tập hợp các kèo bóng đá hôm nay và ngày mai 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 kèo bóng đá hôm nay và ngày mai đó có thể có (một lần) thực hiện các kèo bóng đá hôm nay và ngày mai đó. 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 kèo bóng đá hôm nay và ngày mai bảngMyTab, ban đầu chứa:
Lớp | giá trị -------+------- 1 | 10 1 | 20 2 | 100 2 | 200
Giả sử rằng kèo bóng đá hôm nay và ngày mai có thể nối tiếp A Tính toán:
chọn Sum (giá trị) từ MyTab trong đó lớp = 1;
và sau đó chèn kết quả (30) làValueTrong kèo bóng đá hôm nay và ngày mai hàng mới vớiclass = 2. Đồng thời, kèo bóng đá hôm nay và ngày mai 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 kèo bóng đá hôm nay và ngày mai hàng mới vớiclass = 1. Sau đó, cả hai kèo bóng đá hôm nay và ngày mai cố gắng cam kết. Nếu một trong hai kèo bóng đá hôm nay và ngày mai đ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 kèo bóng đá hôm nay và ngày mai có thể nối tiếp sẽ cho phép một kèo bóng đá hôm nay và ngày mai 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 các phụ thuộc đọc/ghi giữa các kèo bóng đá hôm nay và ngày mai
27150_27323
Khi dựa vào các kèo bóng đá hôm nay và ngày mai 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 đá hôm nay và ngày mai đọc nó đã cam kết thành công. Điều này đúng ngay cả đối với các kèo bóng đá hôm nay và ngày mai chỉ đọc, ngoại trừ dữ liệu đó được đọc trong mộtcó thể hoãn lạikèo bóng đá hôm nay và ngày mai chỉ đọc được biết là có hiệu lực ngay khi đọc, bởi vì một kèo bóng đá hôm nay và ngày mai đó chờ đợi cho đến khi nó có thể có được một ảnh chụp nhanh được đảm bảo 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 đá hôm nay và ngày mai sau đó bị hủy bỏ; Thay vào đó, họ nên thử lại kèo bóng đá hôm nay và ngày mai 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 kèo bóng đá hôm nay và ngày mai đồ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 kèo bóng đá hôm nay và ngày mai 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, kèo bóng đá hôm nay và ngày mai đọ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ậthoặcChọn để chia sẻĐiều này không chỉ có thể chặn các kèo bóng đá hôm nay và ngày mai 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 kèo bóng đá hôm nay và ngày mai. Chúng sẽ xuất hiện trongpg_locksChế độ xem hệ thống với AModecủ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 đá hôm nay và ngày mai để ngăn chặn sự cạn kiệt của bộ nhớ được sử dụng để theo dõi khóa. MỘTChỉ đọckèo bóng đá hôm nay và ngày mai 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ỉ đọckèo bóng đá hôm nay và ngày mai 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 trì hoãnkèo bóng đá hôm nay và ngày mai, nó sẽ chặn cho đến khi nó có thể thiết lập thực tế này. (Đây làchỉ30288_30505
Sử dụng nhất quán các kèo bóng đá hôm nay và ngày mai 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 đá hôm nay và ngày mai 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 đá hôm nay và ngày mai 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 kèo bóng đá hôm nay và ngày mai 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 kèo bóng đá hôm nay và ngày mai 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ậthoặcChọn chia sẻ, kèo bóng đá hôm nay và ngày mai 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 kèo bóng đá hôm nay và ngày mai có thể nối tiếp chỉ cho phép các kèo bóng đá hôm nay và ngày mai đồng thời thực hiện nếu nó có thể chứng minh rằng có một lệnh 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 đá hôm nay và ngày mai 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 kèo bóng đá hôm nay và ngày mai 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ố kèo bóng đá hôm nay và ngày mai 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 kèo bóng đá hôm nay và ngày mai đồng thời.
Để thực hiện tối ưu khi dựa vào các kèo bóng đá hôm nay và ngày mai 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 đá hôm nay và ngày mai làChỉ đọcKhi 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 đá hôm nay và ngày mai có thể nối tiếp.
Đừng đặt nhiều hơn vào một kèo bóng đá hôm nay và ngày mai duy nhất cần thiết cho mục đích toàn vẹn.
Không để lại kết nối"IDLE trong kèo bóng đá hôm nay và ngày mai"dài hơn mức cần thiết.
Loại bỏ kèo bóng đá hôm nay và ngày mai khóa rõ ràng,Chọn để cập nhậtvà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 đá hôm nay và ngày mai có thể nối tiếp.
Khi hệ thống buộc phải kết hợp kèo bóng đá hôm nay và ngày mai 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.
Quét tuần tự sẽ luôn cần kèo bóng đá hôm nay và ngày mai 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 kèo bóng đá hôm nay và ngày mai 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.