Apakah SQL Server menjalankan kueri secara paralel?

10

Apakah SQL Server menjalankan kueri secara paralel? Dengan kata lain, jika saya menjalankan kueri berat yang membutuhkan 10 detik untuk mengeksekusi, dan pada saat yang sama memulai kueri berat lain yang membutuhkan 10 detik, akankah kueri kedua benar-benar mulai setelah 10 detik, atau apakah mereka memulai keduanya pada waktu yang sama ?

pengguna369117
sumber
1
tidak ada jawaban nyata yang mungkin, baca tentang koneksi pooling and locking mechanisme
2
Lebih relevan untuk membaca tentang pekerja SQL Server dan mekanisme penjadwalan koperasi IMO. Secara umum jawaban untuk pertanyaan Anda adalah "ya".
Martin Smith

Jawaban:

14

Maksudmu "bersamaan". Jawabannya adalah ya, dengan peringatan yang terlalu luas untuk dibahas di sini. Faktanya, inti dari RDBMS adalah konkurensi.

"Paralel" memiliki makna yang tepat dalam SQL Server: "satu permintaan didistribusikan lebih dari satu inti prosesor".

gbn
sumber
6

Selama kueri pertama Anda tidak mengunci tabel yang dibutuhkan dalam kueri kedua Anda, mereka akan berjalan secara paralel.

Ash Burlaczenko
sumber
5

Pertanyaan berjalan paralel, sejauh mungkin.

Basis data menggunakan kunci berbeda untuk membaca dan menulis, pada baris, blok atau seluruh tabel, tergantung pada apa yang Anda lakukan.

Jika satu kueri hanya membaca dari tabel, kueri lain juga dapat membaca dari tabel yang sama secara bersamaan. Jika satu kueri memperbarui beberapa catatan dalam sebuah tabel, kueri lain mungkin masih dapat membaca dari tabel selama itu tidak membaca catatan apa pun yang dikunci untuk pembaruan.

Guffa
sumber
2

Bergantung pada data - biasanya berjalan paralel, tetapi beberapa skenario penguncian dapat menyebabkan satu permintaan menunggu yang lain. Tentu saja jika subsistem disk lemah dan Anda tidak memiliki banyak RAM, beberapa kueri dapat berjalan lebih lambat.

Arvo
sumber
0

DDL (bahasa definisi data) bekerja paralel seperti pernyataan SELECT
DML (Bahasa yang dimodifikasi data) tidak berfungsi paralel seperti pernyataan INSERT dan UPDATE


sumber
SELECT bukan pernyataan DDL
a_horse_with_no_name
-1

Jika Anda menulis pertanyaan seperti di bawah ini ... itu akan berjalan secara paralel

SET XACT_ABORT ON
Begin Try
     Begin Tran
        --Your Sql Statement
     Commit Tran
End Try
Begin Catch
    Rollback Tran
End Catch

Catatan - Kueri paralel Anda akan datang dalam kondisi menunggu seandainya ada insert massal dalam sebuah tabel

Pankaj
sumber