2009-06-10 43 views

Trả lời

27

"Một loạt các báo cáo thao tác dữ liệu đó phải hoặc là hoàn toàn hoàn chỉnh hoặc hoàn toàn thất bại, để lại cơ sở dữ liệu trong một nhà nước thống nhất"

+2

Không chỉ cơ sở dữ liệu. Chúng tôi có thể mở rộng khái niệm này cho các thành phần khác - như dịch vụ xếp hàng hoặc trạng thái của các hệ thống bên ngoài. Vì vậy, "Hàng loạt các tuyên bố thao tác dữ liệu phải hoàn toàn hoặc hoàn toàn thất bại, hãy để hệ thống ở trạng thái nhất quán" –

+0

Thật vậy. Nói hay lắm. – Rad

23

Dưới đây là một lời giải thích đơn giản. Bạn cần phải chuyển 100 đô la từ tài khoản A đến B. Bạn có thể tài khoản nào:

accountA -= 100; 
accountB += 100; 

hoặc

accountB += 100; 
accountA -= 100; 

Nếu họ gặp khó khăn giữa đầu tiên và hoạt động thứ hai trong cặp bạn có một vấn đề - hoặc 100 đô la đã biến mất, hoặc họ đã xuất hiện từ hư không.

Giao dịch là một cơ chế cho phép bạn đánh dấu một nhóm hoạt động và thực thi chúng theo cách mà chúng thực thi (cam kết) hoặc trạng thái hệ thống sẽ như thể chúng chưa bắt đầu thực thi (rollback).

beginTransaction; 
accountB += 100; 
accountA -= 100; 
commitTransaction; 

sẽ chuyển 100 đô la hoặc để lại cả hai tài khoản ở trạng thái ban đầu.

58

Giao dịch là cách thể hiện thay đổi trạng thái. Giao dịch lý tưởng có bốn thuộc tính, thường được gọi là ACID:

  • nguyên tử (nếu thay đổi được cam kết, nó sẽ xảy ra trong một ngã swoop, bạn không bao giờ có thể nhìn thấy "một nửa thay đổi")
  • Phù hợp (sự thay đổi có thể chỉ xảy ra nếu trạng thái mới của hệ thống sẽ hợp lệ; bất kỳ nỗ lực nào để thực hiện thay đổi không hợp lệ sẽ không thành công, để hệ thống ở trạng thái hợp lệ trước đó của nó)
  • Bị cô lập (không ai khác nhìn thấy bất kỳ phần nào của giao dịch cho đến khi nó được cam kết)
  • Bền (một khi thay đổi đã xảy ra - nếu hệ thống cho biết giao dịch đã được cam kết, khách hàng không cần phải lo lắng về abou t "xả" hệ thống để thực hiện thay đổi "dính")

Xem mục nhập ACID của Wikipedia để biết thêm chi tiết.

Mặc dù điều này thường được áp dụng cho cơ sở dữ liệu, nhưng không nhất thiết phải như vậy. (Cụ thể, xem Software Transactional Memory.)

169

Giao dịch là đơn vị công việc mà bạn muốn coi là "toàn bộ". Nó phải xảy ra đầy đủ hoặc không hoàn toàn.

Ví dụ điển hình là chuyển tiền từ tài khoản ngân hàng này sang tài khoản ngân hàng khác. Để làm điều đó, trước tiên bạn phải rút số tiền từ tài khoản nguồn và sau đó gửi tiền vào tài khoản đích. Các hoạt động đã thành công đầy đủ. Nếu bạn dừng lại nửa chừng, tiền sẽ bị mất, và điều đó rất tệ.

Trong các giao dịch cơ sở dữ liệu hiện đại cũng làm một số việc khác - như đảm bảo rằng bạn không thể truy cập dữ liệu mà người khác đã viết nửa chừng. Nhưng ý tưởng cơ bản là giống nhau - các giao dịch ở đó để đảm bảo rằng bất kể điều gì xảy ra, dữ liệu bạn làm việc sẽ ở trạng thái hợp lý. Họ đảm bảo rằng sẽ KHÔNG có một tình huống mà tiền được rút từ một tài khoản, nhưng không được gửi vào một tài khoản khác.

+9

+1 cho ví dụ !! –

+1

Câu trả lời này phải được chấp nhận. – user1205577

+0

Cảm ơn ví dụ rất đơn giản – Nomadme

1

Tôi cho rằng định nghĩa về 'xử lý giao dịch' sẽ hữu ích hơn, vì nó bao gồm các giao dịch như một khái niệm trong khoa học máy tính.

Từ wikipedia:

Trong khoa học máy tính, xử lý giao dịch là xử lý thông tin mà được chia thành cá nhân, hoạt động tách rời, được gọi là giao dịch. Mỗi giao dịch phải thành công hoặc thất bại dưới dạng đơn vị hoàn chỉnh; nó không thể ở trạng thái trung gian.

http://en.wikipedia.org/wiki/Transaction_processing#Implementations

0

Tôi nghĩ giao dịch là một hành động nguyên tử về DBMS.

điều đó có nghĩa là không thể tách riêng. có, trong quá trình chuyển đổi, có thể có một số hướng dẫn để hệ thống thực thi. nhưng chúng được liên kết với nhau để hoàn thành một nhiệm vụ cơ bản duy nhất. Ví dụ:

. bạn cần phải đi qua một cây cầu (hãy coi đây là một sự chuyển giao), và để làm điều này, bạn cần 100 bước. tổng thể, các bước này không thể tách rời. khi bạn đã thực hiện một nửa trong số họ, chỉ có hai lựa chọn cho bạn: tiếp tục hoàn thành tất cả, và quay lại điểm bắt đầu. nó giống như kết quả của một giao dịch: thành công (cam kết) và thất bại (rollback)

1

Ngoài các câu trả lời ở trên, cần lưu ý rằng, ít nhất là về mặt lý thuyết, không hạn chế nào tài nguyên có liên quan đến giao dịch.

Hầu hết thời gian, nó chỉ là một cơ sở dữ liệu hoặc nhiều cơ sở dữ liệu riêng biệt, nhưng cũng có thể hiểu rằng máy in tham gia vào giao dịch và có thể khiến giao dịch bị lỗi. .

8

Giao dịch là một chuỗi gồm một hoặc nhiều hoạt động SQL được coi là đơn vị.

Cụ thể, mỗi giao dịch xuất hiện để chạy tách biệt, và hơn nữa, nếu hệ thống bị lỗi, mỗi giao dịch được thực hiện toàn bộ hoặc không phải tất cả.

Khái niệm giao dịch được thúc đẩy bởi hai mối quan tâm hoàn toàn độc lập. Người ta phải làm với việc truy cập đồng thời vào cơ sở dữ liệu của nhiều khách hàng, và người kia phải làm với việc có một hệ thống có khả năng phục hồi cho các lỗi hệ thống.

giao dịch hỗ trợ gì được gọi là các thuộc tính ACID:

  • A: Atomicity;
  • C: Tính nhất quán;
  • I: Cách ly;
  • D: Độ bền.
0

giao dịch là một đơn vị bất khả phân của xử lý dữ liệu giao dịch -Tất cả phải có các tính chất ACID:

ví dụ: Atomicity, nhất quán, Isolation và Durable giao dịch là tất cả hoặc không có gì nhưng không intermidiate (nó có nghĩa là nếu bạn chuyển tiền từ tài khoản này sang tài khoản khác, một tài khoản phải mất số tiền đó và một tài khoản khác phải nhận số tiền đó, nhưng nếu bạn chuyển tiền từ một tài khoản và tài khoản khác vẫn trống sẽ không phải là giao dịch)

7

Thuộc tính của giao dịch:

Giao dịch đã bốn đặc tính tiêu chuẩn sau đây, thường được gọi bởi các ACID viết tắt:

Atomicity: ensures that all operations within the work unit are completed 
      successfully; otherwise, the transaction is aborted at the point of 
      failure, and previous operations are rolled back to their former state. 

Consistency: ensures that the database properly changes states upon a successfully 
      committed transaction. 

Isolation: enables transactions to operate independently of and transparent to 
      each other. 

Durability: ensures that the result or effect of a committed transaction persists 
      in case of a system failure. 

giao dịch điều khiển:

Có lệnh sau dùng để điều khiển giao dịch:

COMMIT: to save the changes. 

ROLLBACK: to rollback the changes. 

SAVEPOINT: creates points within groups of transactions in which to ROLLBACK 

SET TRANSACTION: Places a name on a transaction. 
0

giao dịch có thể được định nghĩa là tập hợp tác vụ được coi là đơn vị xử lý tối thiểu. Mỗi đơn vị xử lý tối thiểu không thể được chia xa hơn.

Hoạt động chính của giao dịch được đọc và ghi.

Tất cả giao dịch phải chứa bốn thuộc tính thường được gọi là thuộc tính ACID nhằm đảm bảo tính chính xác, đầy đủ và toàn vẹn dữ liệu.

Các vấn đề liên quan