Transaction trong sql có các thuộc tính thường được viết tắt là acid nghĩa là gì?
Bài viết được sự cho phép của tác giả Nguyễn Hữu Khanh Show Khái niệm transaction trong database là một khái niệm quan trọng mà tất cả các lập trình viên nên biết bởi vì chúng ta sẽ làm việc rất nhiều với khái niệm này. Trong bài viết này, mình xin trình bày với các bạn về khái niệm này! Để dễ hình dung, mình xin lấy một ví dụ như sau: chúng ta đang làm việc với một ứng dụng bên ngân hàng, ứng dụng này có một tính năng đó là chuyển tiền giữa các tài khoản ngân hàng với nhau, ví dụ chuyển tiền cho tài khoản A sang tài khoản B. Đây là một tính năng mà quá trình xử lý sẽ gồm 2 bước:
Tuyển database lương cao hấp dẫn trên TopDev Tuyển dụng IT lương cao nhiều ngành nghề
Rõ ràng, như các bạn thấy, đây là một quá trình nếu gọi là thành công thì bắt buộc 2 bước trên phải thành công, hoặc nếu thất bại thì bắt buộc 2 bước trên cũng phải thất bại luôn. Nếu chỉ một trong 2 bước trên thành công hoặc thất bại thì chúng ta sẽ gặp vấn đề ngay. Và chúng ta khi xây dựng ứng dụng cũng phải đảm bảo 2 điều kiện trên. Đây chính là ý tưởng chính của khái niệm transaction trong database. Trong database, một transaction là một tập hợp các thao tác mà ở đó hoặc là các thao tác đó được thực hiện thành công, hoặc là không một thao tác nào được thực hiện thành công cả. Khi các bạn suy nghĩ về transaction trong database, các bạn hãy hình dung nó là “hoặc là tất cả hoặc là không gì hết”. Ở đây, chúng ta có một chữ viết tắt ACID (Atomicity, Consistency, Isolation, Durability) định nghĩa các tính chất của một transaction trong database. Trong đó:
Trong ví dụ của mình, rõ ràng khi đã trừ tiền trong tài khoản A thì bắt buộc việc cộng tiền vào tài khoản B phải xảy ra. Còn không thì không có gì xảy ra hết, đã không trừ tiền trong tài khoản A thì chắc chắn rồi, việc cộng tiền vào tài khoản B cũng không xảy ra.
Trong ví dụ của mình thì, nếu đã trừ 10$ trong tài khoản A thì trong tài khoản B phải được cộng 10$.
Trong ví dụ của mình, giả sử cùng môt lúc xảy ra 2 transaction như trên thì rõ ràng chúng ta không xác định được trạng thái của tài khoản A và tài khoản B sau khi thực hiện cùng 1 lúc. Mà điều này thì rất nguy hiểm.
Ví dụ sau khi chuyển tiền vào tài khoản B thành công thì dù database có gặp bất cứ vấn đề gì thì tài khoản B vẫn đảm bảo đã nhận đủ 10$. Bài viết gốc được đăng tải tại huongdanjava.com Có thể bạn quan tâm:
Hôm nay tôi muốn đưa bạn tất cả trở lại cho một trong những câu hỏi phỏng vấn về cơ rất độc đáo mà tôi thấy thường xuyên sử dụng trong các buổi phỏng vấn. Tôi đã từng viết về tính chất ACID này. Trong sự nghiệp của tôi, tôi đã thấy nó trong hàng ngàn cuộc phỏng vấn. Một trong những dịch vụ phổ biến nhất của tôi là giúp mọi người với những câu hỏi phỏng vấn và câu các trả lời. Tôi thường quan sát thấy khi phỏng vấn hết các câu hỏi để hỏi và suy nghĩ của các câu hỏi tiếp theo, họ thường hỏi câu hỏi về thuộc tính ACID của các cơ sở dữ liệu. Câu hỏi: ACID là gì trong cơ sở dữ liệu? Trả lời: ACID (viết tắt của Atomicity, Consistency, Isolation, Durability) là một khái niệm cơ sở dữ liệu mà các chuyên gia thường tìm kiếm khi đánh giá các cơ sở dữ liệu và kiến trúc ứng dụng. Đối với một cơ sở dữ liệu đáng tin cậy tất cả bốn thuộc tính cần đạt được. Atomicity là một đề xuất tất cả hoặc không có gì. Tính chất này đảm bảo rằng khi một giao dịch liên quan đến hai hay nhiều xử lý, hoặc là tất cả các xử lý được thực hiện hoặc không có xử lý được thực hiện. Các tính chất ACID của cơ sở dữ liệu được mô tả trong ISO / IEC 10.026-1: 1992 phần 4. Ghi số này nếu bạn muốn gây ấn tượng với người phỏng vấn với kiến thức của bạn. Bạn biết rằng anh ta sẽ hỏi câu hỏi này, tốt hơn sẵn sàng để trả lời câu hỏi này chính xác và gây ấn tượng với anh ấy / cô ấy. Trích nguồn từ: (http://blog.sqlauthority.com/2016/04/10/acid-properties-database-interview-question-week-066/)
Transaction là một tiến trình xử lý có xác định điểm đầu và điểm cuối, được chia nhỏ thành các operation (phép thực thi) , tiến trình được thực thi một cách tuần tự và độc lập các operation đó theo nguyên tắc hoặc tất cả đều thành công hoặc một operation thất bại thì toàn bộ tiến trình thất bại. Nếu việc thực thi một operation nào đó bị fail (hỏng) đồng nghĩa với việc dữ liệu phải rollback (trở lại) trạng thái ban đầu. Các tính chất của TransactionMột transaction đòi hỏi phải có 4 tính chất ACID. ACID là viết tắt của cụm từ Atomicity (nguyên tử), Consitency (nhất quán), Isolation (Cô lập), và Durability (Lâu bền). Đây là các thuộc tính mà mọi transaction đều được đảm bảo bởi SQL Server.
Cấu trúc transactionMột transaction được định nghĩa dựa trên:
Một số vấn đề xuất hiện khi có hai transaction cùng hoạt độngCùng một lúc, DB có thể được truy cập bởi nhiều clients. Nếu các clients cùng truy xuất vào một phần dữ liệu, thì sẽ nảy sinh các vấn đề liên quan đến tình trạng tranh chấp.Để giải quyết các vấn đề tranh chấp nêu trên, hệ quản trị cơ sở dữ liệu cần sử dụng các phương thức khóa, nhờ vậy mà khi có tranh chấp xảy ra hệ quản trị cơ sở dữ liệu có thể quyết định transaction nào được thực hiện và transaction nào phải chờ.
Trong môi trường truy xuất đồng thời, có thể xảy ra một số vấn đề như sau:
Giải pháp xử lý
Tài liệu tham khảo https://kipalog.com/posts/DB-Transaction https://techmaster.vn/posts/26316/transaction-la-gi |