Chào mừng đến với BIS Đăng nhập | Đăng ký | Trợ giúp
trong Tìm kiếm

Điều khiển tương tranh trong SQL SERVER

Bài cuối 09-05-2014 02:41 PM của chucnv. 0 trả lời.
Trang 1 trong số 1 (1 nội dung)
Sắp xếp bài viết: Trước Tiếp theo
  • 09-05-2014 02:41 PM

    • chucnv
    • 10 thành viên năng nổ nhất
    • Tham gia 12-05-2008
    • Điểm 28,320

    Điều khiển tương tranh trong SQL SERVER

    Điều khiển tương tranh trong SQL SERVER

    Concurrency Control in SQL Server

    Khi nhiều người dùng truy cập cùng hạng mục dữ liệu cùng lúc thì xảy ra vấn đề tương tranh dữ liệu. Bài viết này minh họa một số trường hợp của vấn đề điều khiển tương tranh trong SQL Server.

    Read Uncommitted:  Đọc dữ liệu chưa commit

    Giả sử số dư của các tài khoản trong bảng ACCOUNTS như sau:

    Query 1

    Query 2

    Với Read Uncomitted , query 2 không chờ cho đến khi query 1 kết thúc mới đọc dữ liệu, vì vậy kết quả số dư đọc được của tài khoản ‘TK001’ là 100 (chưa commit). Sau 10 giây, query 1 rollback và số dư của tài khoản ‘TK001’ vẫn là 500 (không đổi).

    Read Comitted: Đọc dữ liệu đã commit (default)

    Query 2

    Với Read Comitted, Query 2 sẽ đợi cho đến khi Query 1 kết thúc (trong ví dụ này là 10 giây) mới đọc dữ liệu. Vì vậy kết quả đúng như mong đợi (500)

    Repeatable Read: Đảm bảo cho nhiều tác vụ đọc dữ liệu (select) trong cùng một giao dịch có kết quả giống nhau.

    Query 1

    Query 2

    Query 2 chỉ được thực hiện khi Query 1 đã hoàn thành, vì vậy kết quả 2 cậu lệnh SELECT  trong Query 1 là giống nhau (500), sau đó số dư của tài khoản ‘TK001’ được đặt lại là 0

    Serializable (highest isolation level): Đảm bảo rằng việc thêm mới dữ liệu vào bảng chỉ được thực hiện cho đến khi kết thúc giao dịch hiện hành.

    Giả sử bảng ACCOUNTS có 4 tài khoản như sau

    Query 1

    Query 2

    Câu lệnh INSERT trong Query 2 chỉ được thực hiện khi transaction trong Query 1 hoành thành, vì vậy kết quả của Query 1 vẫn cho ra số dòng dữ liệu trong bảng ACCOUNTS là 4.


    • Điểm chủ đề: 20
Trang 1 trong số 1 (1 nội dung)
Powered by Community Server (Commercial Edition), by Telligent Systems