Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Trong Oracle SQL, tại sao các hàng đã xóa (không cam kết) không hiển thị trong phiên hiện tại nhưng lại hiển thị trong các phiên khác?

Cũng như thảo luận về các thuộc tính ACID mà ziesemer đến đã giới thiệu cho bạn, bạn nên biết về Kiểm soát đồng thời nhiều phiên bản hoặc MVCC. Nếu bạn muốn biết 'tất cả về nó', hãy xem xét đọc Kiểm soát tiền tệ tương đối và Phục hồi trong Hệ thống cơ sở dữ liệu của Philip A. Bernstein, Vassos Hadzilacos, Nathan Goodman (có thể tải xuống).

Trong Oracle và các MVCC DBMS tương tự khác, khi bạn bắt đầu một giao dịch, một ghi chú được lưu giữ dấu thời gian xác định thời gian bắt đầu đó (nhưng giá trị dấu thời gian không nhất thiết phải là 'giây đơn giản kể từ giá trị của Unix Epoch'). Trong khi giao dịch đó đang chạy, nó sẽ không thấy bất kỳ dữ liệu nào được chèn dấu thời gian sau thời gian bắt đầu. Hệ thống giữ các phiên bản trước của trang dữ liệu có sẵn cho các giao dịch vẫn đang chạy. Khi giao dịch ghi một trang, nó sẽ tạo một bản sao mới với dấu thời gian mới, nhưng bản sao đó không được cung cấp cho các giao dịch khác cho đến khi giao dịch sửa đổi được cam kết và thậm chí sau đó, nó chỉ được cung cấp cho các giao dịch bắt đầu sau khi cam kết.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Trong trình kích hoạt Oracle, tôi có thể gán mới và cũ cho một biến kiểu hàng không?

  2. Oracle 10g chấp nhận năm chữ số trong một ngày

  3. Cách tạo tệp cuộn chỉ lệnh sql oracle

  4. Tạo một khóa chính duy nhất (băm) từ các cột cơ sở dữ liệu

  5. làm mới nguồn liên kết db đã thay đổi (cổng oracle vào máy chủ sql)