Giao kèo bóng đá eurolà 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 kèo bóng đá euro 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ữ kèo bóng đá euro 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 kèo bóng đá euro 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 kèo bóng đá eurocung cấp cho chúng tôi sự đảm bảo này. Một giao kèo bóng đá euro được cho làAtomic: Từ quan điểm của các giao kèo bóng đá euro 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 kèo bóng đá euro đượ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 kèo bóng đá euro có liên quan chặt chẽ đến khái niệm cập nhật nguyên tử: Khi nhiều giao kèo bóng đá euro đang chạy đồng thời, mỗi giao kèo bóng đá euro không thể thấy những thay đổi không hoàn chỉnh được thực hiện bởi người khác. Ví dụ: nếu một giao kèo bóng đá euro 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 kèo bóng đá euro được thiết lập bằng cách xung quanh các lệnh SQL của giao kèo bóng đá euro vớibắt đầu
vàcam kết
lệnh. Vì vậy, giao kèo bóng đá euro 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 kèo bóng đá euro, 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 kèo bóng đá euro. 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 kèo bóng đá euro.
Một số thư viện máy khách phát hànhBắt đầu
vàcam kết
Các lệnh tự động, để bạn có thể nhận được hiệu ứng của các khối giao kèo bóng đá euro 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 kèo bóng đá euro 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 kèo bóng đá euro, 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 kèo bóng đá euro 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ố kèo bóng đá euro nguyên.
Tất cả những điều này đang xảy ra trong khối giao kèo bóng đá euro, 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 kèo bóng đá euro, 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ữ kèo bóng đá euro 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 kèo bóng đá euro thông qua việc sử dụng các điểm lưu. Hơn thế nữa,rollback to
là cách duy nhất để lấy lại quyền kiểm soát một khối giao kèo bóng đá euro đã bị bệnh bị hủy bỏ bởi hệ thống do lỗi, thiếu hoàn toàn và bắt đầu lại.