Transactions Là Gì

     

Hey, chào hầu hết người, hôm nay bất ngờ mình nhận dc một thắc mắc của 1 anh cùng team "chú có biết transaction là gì không?". Một thắc mắc tưởng như là không cực nhọc nhưng sẽ làm cực nhọc mình :v vị ở trường mình cũng chưa từng nghe qua quan niệm về transaction. Với cũng chính câu hỏi đó đã khiến cho mình dành riêng thời gian tò mò về nó

*
.

Bạn đang xem: Transactions là gì

Transaction là gì?

Transaction là một trong những tiến trình cách xử trí có các định điểm đầu cùng điểm cuối, được chia nhỏ tuổi thành những operation, tiến trình được thực hiện một biện pháp tuần tự và đọc lập những operation đó theo nguyên tắc toàn bộ đều thành công hoặc một operation chiến bại thì cục bộ tiến trình đang thất bại. Nếu việc thực hiện một operation nào kia bị lỗi đồng nghĩa với việc dữ liệu phải trở lại trạng thái ban đầu.

Nghe dường như khó phát âm quá thất thoát

*
mang một vài lấy một ví dụ để họ dễ tưởng tượng nha:

Ví dụ 1: Một ví dụ dễ dàng nhất là việc thực hiện setup phần mềm hoặc gỡ cho phần mềm. Lấy ví dụ này hoàn toàn có thể được xem là một transaction vị việc cài đặt hay gỡ vứt sẽ được phân thành các bước, tiến hành một cách tuần tự từ những bước đầu đến cách cuối, ví như toàn bộ quá trình thực thi thành công đồng nghĩa với việc thiết lập hay gỡ bỏ thành công và ngược lại, ví như một bước nào đó lose thì tiến trình cài đặt hoặc gỡ bỏ này vẫn rollback quay trở lại và không có bất kỳ thay thay đổi nào trên máy tính.

Ví dụ 2: Đây là một trong những ví dụ rất rõ ràng về transaction, ví dụ như này đó là việc tiến hành giao dịch chuyển khoản. Tài khoản A chuyển khoản cho thông tin tài khoản B thì bọn họ phải tiến hành ít tốt nhất 2 thao tác làm việc là trừ chi phí ở tài khoản A và cộng tiền vào tài khoản B. Nếu 1 trong 2 thao tác làm việc bị thảm bại thì bài toán chuyển khoản sẽ bị thất bại cùng dữ liệu sẽ tiến hành trả lại như thời gian ban đầu.

Vậy để khẳng định đâu là 1 trong những transaction thì làm cụ nào? Để có tác dụng được điều đó họ cần để ý đến phần đa yếu tố sau:

Trong quá trình xử lý cần xác minh điểm đầu với điểm cuối, tức là lúc nào tiến trình bắt đầu và bao giờ tiến trình được xem như là kết thúc.Tiến trình phải được chia nhỏ dại thành những operationThực thi một biện pháp tuần tự các operationsTất cả các operation đều xúc tiến thành công thì tiến trình mới được coi là thành công. Nếu có một operation tiến hành thất bại thì coi như toàn bộ transaction là thất bại.Nếu transaction thua trận thì toàn bộ dữ liệu phải trở lại trạng thái ban đầu

Các kiểu của transaction

Transaction có các kiểu không giống nhau chúng được phân biện bằng việc chia các operations như thế nào. Có 2 mẫu mã transaction:

Flat Transaction: việc chia những operation là đồng cấp nhau. Thực thi những operation là tuần tự từ bỏ trái sang đề xuất hoặc từ trên xuống dưới.Nested Transaction: những operation lồng nhau, việc thực thi các operation dựa theo chính sách từ trong ra ngoài. Vì vậy khi chú ý vào hình vẽ họ thấy những operation sống dạng này có vẻ phụ thuộc vào vào nhau mà lại khi xúc tiến thì là tự do theo chính sách operation vào thực thi ngừng thì bắt đầu đến operation ngoài.

Các thuộc tính của Transaction

Atomicity: Một transaction khẳng định ranh giới của nó rất rõ ràng, tức xác minh điểm bắt đầu và chấm dứt của tiến trình. Như vậy có thể coi nó như một đơn vị chức năng thực thi và đơn vị chức năng thực thi này triển khai theo phép tắc “all or nothing”. Nghĩa là giả dụ một nhân tố nào đó trong transaction tiến hành lỗi thì đồng nghĩa tương quan với việc không tồn tại gì xẩy ra tức không có gì biến đổi về mặt dữ liệu.Consistency: Dữ liệu đồng hóa với transaction ở thời điểm bước đầu và hoàn thành hay đảm bảo an toàn rằng Database biến đổi một cách đúng chuẩn trạng thái theo một transaction đã làm được commit thành công.Isolation: những transaction có khả năng hoạt động một cách hòa bình và không tương quan đến nhau.Durability: tài liệu của transaction sau khi thực thi xong được cố kỉnh định, đồng ý và bền vững. Nghĩa là những đổi khác đã được nỗ lực định, không tồn tại chuyện có thể chuyển lại trạng thái tài liệu lúc trước khi thực hiện transaction.

Xem thêm: Mua Bán Oppo R1 Cũ Giá Bao Nhiêu, Oppo R1 Cũ Giá Bao Nhiêu

Tìm phát âm về các Isolation Levels vào Transaction

Như đã đề cập sinh sống trên Isolation là những transaction tất cả khả năng hoạt động một cách độc lập và không tương quan đến nhau. Những Isolation Levels được xác minh thông qua các hiện tượng sau:

Dirty Reads vấn đề này xảy ra lúc 1 transaction tiến hành đọc tài liệu mà chưa được commited. Ví dụ: transaction A cập nhập 1 dữ liệu, transaction B hiểu dữ liệu sau khi A update xong. Nhưng vì lý do nào kia A ko commit thành công, dự liệu quay trở lại trạng thái ban đầu, lúc đó dữ liệu của B thay đổi Dirty.Nonrepeatable reads xẩy ra khi một transaction đọc cùng 1 dữ liệu gấp đôi nhưng lại nhận được giá trị không giống nhau. Ví dụ: transaction A phát âm 1 dữ liệu, transaction B update xóa tài liệu đó. Trường hợp A đọc lại tài liệu đó nó đã lấy những giá trị là khác nhau.Phantom reads là rủi ro xảy ra cùng với lệnh read bao gồm điều kiện. Ví dụ: mang sử transaction A gọi một tập hợp những dữ liệu đáp ứng nhu cầu một số đk tìm kiếm, transaction B tạo nên một tài liệu mới khớp với điều kiện được tra cứu kiếm mang lại transaction A. Nếu A tiến hành lại với đk như vậy thì nó sẽ nhận dc một tập hợp những dữ liệu là ko đồng nhất.

Như vậy, để tránh được những trường hợp nói trên họ cần nên khóa dữ liệu, quán triệt những tiến trình xử lý khác triển khai các operations trên tài liệu khi transaction lúc này đang làm việc và bài toán khóa này sẽ được giải phóng ở cuối transaction. Bao gồm 3 nhiều loại khóa dữ liệu là: write locks, read locks, rang locks. Isolation Levels chỉ ra đều mức độ khóa khác nhau. Dưới đây là các Isolation Levels:

*

Read uncommitted khi transaction thực hiện ở mức này, những truy vấn vẫn có thể truy nhập vào các bạn dạng ghi đang được cập nhật bởi một transaction khác với nhận được tài liệu tại thời điểm đó tuy vậy dữ liệu đó không được commit. Giả dụ vì tại sao nào kia transaction ban đầu rollback lại phần lớn cập nhật, tài liệu sẽ quay trở lại giá trị cũ. Lúc ấy transaction đồ vật hai dấn được dữ liệu sai.

Read committed Transaction sẽ không đọc được tài liệu đang được cập nhật mà cần đợi đến khi việc update thực hiện xong. Chính vì vậy nó tránh được dirty read như ở mức trên.

Repeatable read nấc isolation này hoạt động nhứ nút read commit tuy vậy nâng thêm một nấc nữa bằng phương pháp ngăn quán triệt transaction ghi vào dữ liệu đang được đọc vày một transaction khác cho đến khi transaction khác kia hoàn tất.

Serializable Đây là mức cao nhất của isolation levels, bảo vệ read cùng write locks. Vào trường phù hợp phép read bao gồm mệnh đề điều kiện, Serializable cũng cần đòi hỏi range lock nhằm tránh phantom reads.

Xem thêm: Cách Mọc Tóc Nhanh Tại Nhà Hiệu Quả, 8 Cách Làm Mọc Tóc Nhanh Dài Đơn Giản Tại Nhà

Kết luận:

Nói tóm lại transaction giúp bạn cũng có thể toàn vẹn dữ liệu. "Toàn vẹn dữ liệu" đặc điểm này quen nè làm việc trường các thầy cũng tuyệt bảo bọn họ là phải trọn vẹn dữ liệu hoá ra nó chính là transaction. Hóa ra mình cũng được học đó chỉ là phiên bạn dạng tiếng việt mà lại thôi :v. Nội dung bài viết này bao gồm sự tham khảo từ:

https://www.tutorialspoint.com/sql/sql-transactions.htm

https://docs.microsoft.com/en-us/sql/odbc/reference/develop-app/transaction-isolation-levels?view=sql-server-2017

Cảm ơn chúng ta đã theo dõi. Chúc chúng ta học tập hiệu quả. Bài viết có nhiều thiếu sót mong chúng ta thông cảm.