Tôi đã đọc về 4 mức độ cách ly:giao dịch liên quan mức độ cách ly với ổ khóa trên bàn
Isolation Level Dirty Read Nonrepeatable Read Phantom Read
READ UNCOMMITTED Permitted Permitted Permitted
READ COMMITTED -- Permitted Permitted
REPEATABLE READ -- -- Permitted
SERIALIZABLE -- -- --
Tôi muốn hiểu khóa mỗi cô lập giao dịch mất trên bảng
READ UNCOMMITTED - no lock on table
READ COMMITTED - lock on committed data
REPEATABLE READ - lock on block of sql(which is selected by using select query)
SERIALIZABLE - lock on full table(on which Select query is fired)
dưới đây là ba hiện tượng có thể xảy ra trong cách ly giao dịch
Đọc bẩn - không khóa
Nonrepeatable đọc - không đọc bẩn như khóa trên dữ liệu cam kết
Phantom đọc - khóa trên khối sql (được lựa chọn bằng cách sử dụng chọn truy vấn)
Tôi muốn hiểu nơi chúng tôi xác định các mức cách ly này: chỉ ở cấp jdbc/hibernate hoặc trong DB cũng
PS: Tôi đã xem qua các liên kết trong Isolation levels in oracle, nhưng có vẻ vụng về và nói chuyện trên cơ sở dữ liệu cụ thể
Điều này hoàn toàn phụ thuộc vào cơ sở dữ liệu. Cơ sở dữ liệu khác nhau có thể sử dụng các thuật toán khác nhau cho các mức cô lập. Một số có thể sử dụng MVCC (không có khóa trên truy vấn chọn), một số sử dụng khóa 2 pha nghiêm ngặt (khóa chia sẻ và độc quyền). –