Giao tỷ lệ kèo bóng đálà một khái niệm cơ bản của tất cả các hệ thống cơ sở dữ liệu. Điểm thiết yếu của một giao tỷ lệ kèo bóng đá là nó kết hợp nhiều bước vào một hoạt động duy nhất, không có gì.
Ví dụ, hãy xem xét cơ sở dữ tỷ lệ kèo bóng đá ngân hàng chứa số dư cho các tài khoản khách hàng khác nhau, cũng như tổng số dư tiền gửi cho các chi nhánh. Giả sử rằng chúng tôi muốn ghi lại khoản thanh toán 100 đô la từ tài khoản của Alice vào tài khoản của Bob.
Cập nhật tỷ lệ kèo bóng đá khoản đặt số dư = cân bằng - 100.00
Chi tiết của các lệnh này không quan trọng ở đây; Điểm quan trọng là có một số cập nhật riêng biệt liên quan để thực hiện hoạt động khá đơn giản này.Giao tỷ lệ kèo bóng đácung cấp cho chúng tôi sự đảm bảo này. Một giao tỷ lệ kèo bóng đá được cho làAtomic: Từ quan điểm của các giao tỷ lệ kèo bóng đá khác, nó xảy ra hoàn toàn hoặc hoàn toàn không.
Chúng tôi cũng muốn đảm bảo rằng một khi một giao tỷ lệ kèo bóng đá được hoàn thành và được hệ thống cơ sở dữ liệu thừa nhận, nó thực sự đã được ghi lại vĩnh viễn và sẽ không bị mất ngay cả khi một vụ tai nạn xảy ra ngay sau đó. Ví dụ, nếu chúng tôi đang ghi lại việc rút tiền mặt của Bob, chúng tôi không muốn có bất kỳ cơ hội ghi nợ nào vào tài khoản của anh ấy sẽ biến mất trong một vụ tai nạn ngay sau khi anh ấy bước ra khỏi cửa ngân hàng.
Một thuộc tính quan trọng khác của cơ sở dữ liệu giao tỷ lệ kèo bóng đá có liên quan chặt chẽ đến khái niệm cập nhật nguyên tử: Khi nhiều giao tỷ lệ kèo bóng đá đang chạy đồng thời, mỗi giao tỷ lệ kèo bóng đá không thể thấy những thay đổi chưa hoàn chỉnh được thực hiện bởi người khác. Ví dụ: nếu một giao tỷ lệ kèo bóng đá bận rộn tổng số số dư chi nhánh, thì nó sẽ không bao gồm việc ghi nợ từ chi nhánh của Alice nhưng không phải là khoản tín dụng cho chi nhánh của Bob, cũng không ngược lại.
inPostgreSQL, Một giao tỷ lệ kèo bóng đá được thiết lập bằng cách xung quanh các lệnh SQL của giao tỷ lệ kèo bóng đá vớibắt đầu
vàcam kết
lệnh. Vì vậy, giao tỷ lệ kèo bóng đá ngân hàng của chúng tôi thực sự trông giống như:
Bắt đầu;
Nếu, qua giao tỷ lệ kèo bóng đá, chúng tôi quyết định chúng tôi không muốn cam kết (có lẽ chúng tôi chỉ nhận thấy rằng sự cân bằng của Alice đã âm âm), chúng tôi có thể phát hành lệnhrollback
thay vìcam kết
và tất cả các bản cập nhật của chúng tôi cho đến nay sẽ bị hủy.
PostgreSQLThực tế đối xử với mọi câu lệnh SQL như được thực thi trong một giao tỷ lệ kèo bóng đá. Nếu bạn không phát hànhbắt đầu
lệnh, sau đó mỗi câu lệnh riêng lẻ có một ẩn úybắt đầu
và (nếu thành công)cam kết
Bao quanh nó. Một nhóm các câu lệnh được bao quanh bởibắt đầu
vàcam kết
đôi khi được gọi làKhối giao tỷ lệ kèo bóng đá.
Một số thư viện máy khách phát hànhbắt đầu
vàcam kết
lệnh tự động, để bạn có thể nhận được hiệu ứng của các khối giao tỷ lệ kèo bóng đá mà không cần hỏi. Kiểm tra tài liệu cho giao diện bạn đang sử dụng.
Có thể kiểm soát các câu lệnh trong một giao tỷ lệ kèo bóng đá theo kiểu hạt hơn thông qua việc sử dụngSavePoints. SavePoints cho phép bạn loại bỏ có chọn lọc các phần của giao tỷ lệ kèo bóng đá, trong khi thực hiện phần còn lại.SavePoint
, bạn có thể nếu cần quay trở lại điểm lưu vớirollback to
. Tất cả các thay đổi cơ sở dữ liệu của giao tỷ lệ kèo bóng đá giữa việc xác định điểm lưu và quay lại với nó đều bị loại bỏ, nhưng các thay đổi sớm hơn so với điểm lưu được giữ.
Sau khi quay trở lại điểm lưu, nó tiếp tục được xác định, vì vậy bạn có thể quay lại nó nhiều lần. Ngược lại, nếu bạn chắc chắn rằng bạn sẽ không cần quay trở lại một điểm lưu cụ thể một lần nữa, nó có thể được phát hành, vì vậy hệ thống có thể giải phóng một số tỷ lệ kèo bóng đá nguyên.
Tất cả những điều này đang xảy ra trong khối giao tỷ lệ kèo bóng đá, do đó, không có phiên nào có thể nhìn thấy cho các phiên cơ sở dữ liệu khác. Khi nào và nếu bạn cam kết khối giao tỷ lệ kèo bóng đá, các hành động đã cam kết sẽ được hiển thị như một đơn vị cho các phiên khác, trong khi các hành động cuộn trở lại không bao giờ được hiển thị.
Ghi nhớ cơ sở dữ tỷ lệ kèo bóng đá ngân hàng, giả sử chúng tôi ghi nợ 100,00 đô la từ tài khoản của Alice và tài khoản của tín dụng Bob, chỉ để tìm thấy sau này chúng tôi nên ghi có tài khoản của Wally. Chúng ta có thể làm điều đó bằng cách sử dụng các điểm lưu như thế này:
Bắt đầu;
Ví dụ này, tất nhiên, quá đơn giản, nhưng có rất nhiều quyền kiểm soát có thể trong một khối giao tỷ lệ kèo bóng đá thông qua việc sử dụng các điểm lưu. Hơn thế nữa,rollback to
17500_17676
Nếu bạn thấy bất cứ điều gì trong tài tỷ lệ kèo bóng đá không chính xác, không khớpMẫu nàyĐể báo cáo vấn đề tài tỷ lệ kèo bóng đá.