Từ 1 tới 7 trên tổng số 7 kết quả

Đề tài: Hỏi về RowLock trong SQL

  1. #1
    Ngày gia nhập
    01 2008
    Bài viết
    240

    Mặc định Hỏi về RowLock trong SQL

    Các bác cho em hỏi là chức năng RowLock trong SQL 2000 hoạt động như thế nào không ạ
    Code:
    select top 5*from Test with(RowLock,ReadPast)
    gải sử câu lện SQL trên được nhúng vào JAVA chẳng hạn và mục đích của em là nếu tiến trình thứ nhất chọn 5 bản ghi đậu và tiến trình thứ 2 sẽ chọn 5 bản ghi tiếp theo nhưng không hiểu sao là tiến trình thứ 2 cứ chọn 5 bản ghi đầu mà không chụi chọn 5 bản ghi tiếp theo và các tiến trình 3,4.... cũng vậy

  2. #2
    Ngày gia nhập
    10 2006
    Bài viết
    107

    Cậu cho nó vào trong Transaction chưa, thông thường tạo một thủ tục. Cú pháp thì đúng rồi mà (lâu lắm rồi không sờ đến cái Lock này)
    Nói là một chuyện, làm là một chuyện. Chi bằng ta làm xong rồi hãy nói như vậy thì nói và làm sẽ là một chuyện.

  3. #3
    Ngày gia nhập
    01 2008
    Bài viết
    240

    Trích dẫn Nguyên bản được gửi bởi Solokop Xem bài viết
    Cậu cho nó vào trong Transaction chưa, thông thường tạo một thủ tục. Cú pháp thì đúng rồi mà (lâu lắm rồi không sờ đến cái Lock này)
    Mình cho nó vào 1 transaction rồi

  4. #4
    Ngày gia nhập
    10 2006
    Bài viết
    107

    Rồi cậu chờ mình test lại xem sao
    Nói là một chuyện, làm là một chuyện. Chi bằng ta làm xong rồi hãy nói như vậy thì nói và làm sẽ là một chuyện.

  5. #5
    Ngày gia nhập
    10 2006
    Bài viết
    107

    @ nthung : Sau khi đọc một số tài liệu offline có online có, thì đi đến kết luận với câu SELECT trên sẽ không đáp ứng được yêu cầu mà cậu đề ra vì SQL Server không hỗ trợ việc lock với mức độ mà cậu đề ra. Có nghĩa là mọi transaction đồng thời có thể đọc được và lock một số row cụ thể trong table nhưng không thể ngăn được việc đọc từ một transaction khác mà chỉ ngăn chặn ở mức độ insert, update, delete. Giải pháp đưa ra vẫn là bảng tạm thôi, điều này sử dụng sẽ tốn performance đó.
    Nói là một chuyện, làm là một chuyện. Chi bằng ta làm xong rồi hãy nói như vậy thì nói và làm sẽ là một chuyện.

  6. #6
    Ngày gia nhập
    01 2008
    Bài viết
    240

    Mặc định Hỏi về RowLock trong SQL

    Trích dẫn Nguyên bản được gửi bởi Solokop Xem bài viết
    @ nthung : Sau khi đọc một số tài liệu offline có online có, thì đi đến kết luận với câu SELECT trên sẽ không đáp ứng được yêu cầu mà cậu đề ra vì SQL Server không hỗ trợ việc lock với mức độ mà cậu đề ra. Có nghĩa là mọi transaction đồng thời có thể đọc được và lock một số row cụ thể trong table nhưng không thể ngăn được việc đọc từ một transaction khác mà chỉ ngăn chặn ở mức độ insert, update, delete. Giải pháp đưa ra vẫn là bảng tạm thôi, điều này sử dụng sẽ tốn performance đó.
    thanks bác @Solokop
    Time

  7. #7
    Ngày gia nhập
    07 2009
    Bài viết
    97

    Bạn dùng UPDLOCK cho các dòng được select là OK
    select top 5*from Test with(UPDLOCK,ReadPast)

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn