SQL Server: Báo cáo so với hàng loạt so với giao dịch so với kết nối


10

Câu hỏi của tôi rất đơn giản: sự khác biệt / tương đồng / chính yếu giữa

  • Giao dịch
  • Mẻ
  • Kết nối và
  • Các câu lệnh

trong máy chủ SQL?

Theo như tôi hiểu thì một kết nối là một kênh liên lạc duy nhất giữa một phiên bản SQL Server và máy khách trong đó các tập hợp các câu lệnh được nhóm thành các lô được thực thi. Một lô được ánh xạ ngầm hoặc rõ ràng đến một hoặc một số giao dịch. Điều này có đúng không?


Câu trả lời:


4

Khá nhiều.

Một lô chỉ là một lô lệnh cần được thực thi. Giao dịch là một tập hợp các lệnh được đảm bảo thành công hoặc thất bại hoàn toàn (nghĩa là nó sẽ không hoàn thành một nửa các lệnh và sau đó thất bại, nếu một thất bại thì tất cả đều thất bại).

Theo như tôi biết thì SQL Server sử dụng nhóm kết nối nên tôi sẽ không dựa vào một kết nối cho mỗi ý tưởng của khách hàng.


1
Vì vậy, các cardinality giữa lô và giao dịch là gì? Có thể có nhiều đợt cho mỗi giao dịch? Làm thế nào về ngược lại?

1
Theo tôi biết có thể có nhiều giao dịch mỗi đợt nhưng không thể có nhiều đợt cho mỗi giao dịch.
Cromulent

5

Giao dịch và hàng loạt là hai khái niệm độc lập. Cả hai có thể được sử dụng trong một đến nhiều cấu hình.

Các khối giao dịch là một "đơn vị công việc" duy nhất, một khái niệm mà sql đã cam kết phải hoàn toàn hoạt động hoặc hoàn toàn không hoạt động. Ví dụ: nếu bạn cập nhật hai bảng được liên kết với nhau; cả hai phải thành công để thay đổi dữ liệu được cam kết. [ https://msdn.microsoft.com/en-us/l Library / ms174377.aspx]

Batch là một khái niệm của Microsoft. Với các công cụ được tạo bởi Microsoft như sqlcmd và osql, lô chỉ đơn giản đảm bảo một kế hoạch thực hiện duy nhất. Ví dụ: nếu bạn tạo một biến và sử dụng nó bên ngoài lô, công cụ sẽ đưa ra lỗi. [ https://msdn.microsoft.com/en-us/l Library / ms188037.aspx]

Vì vậy, bạn có thể có nhiều lô cập nhật nhiều bảng trong một khối giao dịch. Theo như họ không vi phạm kế hoạch thực hiện hàng loạt cá nhân đó là.

Ngoài ra, trong một lô, bạn có thể có nhiều khối giao dịch, đảm bảo tính toàn vẹn dữ liệu giữa các thực thể cơ sở dữ liệu như các bảng.

Kết nối chỉ đơn giản là bắt tay giao tiếp chấp thuận một để chạy truy vấn trên máy chủ.

Báo cáo là các dòng riêng lẻ tạo thành một truy vấn. GO (phân tách lô T-Sql) và BEGIN TRANSACTION (ANSI SQL để bắt đầu khối giao dịch mới) đều là các câu lệnh.


1

Hàng loạt và giao dịch tồn tại ở cùng cấp. Một lô là một tập hợp các lệnh SQL không liên quan. Một giao dịch là một tập hợp các lệnh SQL hoạt động (theo như tất cả những người dùng khác của cơ sở dữ liệu đó có liên quan) như một câu lệnh.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.