SQL Server: Pernyataan vs. Kelompok vs. Transaksi vs. Koneksi


10

Pertanyaan saya sederhana: Apa perbedaan / persamaan / kardinalitas antara

  • Transaksi
  • Batch
  • Koneksi dan
  • Pernyataan

dalam SQL Server?

Sejauh yang saya mengerti koneksi adalah saluran komunikasi tunggal antara contoh SQL Server dan klien di mana koleksi pernyataan dikelompokkan sebagai batch dijalankan. Batch dipetakan secara implisit atau eksplisit ke satu atau beberapa transaksi. Apakah ini benar?


Jawaban:


4

Kurang lebih.

Batch hanya itu, batch perintah yang perlu dijalankan. Transaksi adalah seperangkat perintah yang dijamin akan berhasil atau gagal total (artinya tidak akan menyelesaikan setengah dari perintah dan kemudian gagal pada sisanya, jika salah satu gagal mereka semua gagal).

Sejauh yang saya tahu SQL Server menggunakan pooling koneksi jadi saya tidak akan bergantung pada satu koneksi per ide klien.


1
Jadi, apa kardinalitas antara batch dan transaksi? Apakah mungkin untuk memiliki beberapa batch per transaksi? Bagaimana sebaliknya?

1
Sejauh yang saya ketahui adalah mungkin untuk memiliki beberapa transaksi per batch tetapi tidak mungkin untuk memiliki beberapa batch per transaksi.
Cromulent

5

Transaksi dan Batch adalah dua konsep independen. Keduanya dapat digunakan dalam konfigurasi satu ke banyak.

Blok transaksi adalah "unit kerja" tunggal, sebuah konsep yang mengikat sql harus sepenuhnya berfungsi atau tidak berfungsi sama sekali. Misalnya, jika Anda memperbarui dua tabel yang ditautkan satu sama lain; keduanya harus berhasil agar perubahan data dilakukan. [ https://msdn.microsoft.com/en-us/library/ms174377.aspx]

Batch adalah konsep Microsoft. Dengan alat yang dibuat oleh Microsoft seperti sqlcmd dan osql, batch hanya memastikan satu rencana eksekusi. Misalnya, jika Anda membuat variabel dan menggunakannya di luar bets, alat akan melempar kesalahan. [ https://msdn.microsoft.com/en-us/library/ms188037.aspx]

Jadi, Anda dapat memiliki beberapa kumpulan yang memperbarui beberapa tabel di dalam satu blok transaksi. Sejauh mereka tidak melanggar rencana pelaksanaan batch individu itu.

Selain itu, dalam batch, Anda dapat memiliki beberapa blok transaksi, memastikan integritas data antara entitas basis data seperti tabel.

Koneksi hanyalah jabat tangan komunikasi yang menyetujui seseorang untuk menjalankan kueri di server.

Pernyataan adalah baris individual yang membentuk kueri. GO (T-Sql batch separator) dan BEGIN TRANSACTION (ANSI SQL untuk memulai blok transaksi baru) keduanya merupakan pernyataan.


1

Batch dan transaksi ada di level yang sama. Batch adalah kumpulan perintah SQL yang tidak terkait. Suatu transaksi adalah kumpulan dari perintah SQL yang beroperasi (sejauh semua pengguna lain dari basis data bersangkutan) sebagai satu pernyataan.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.