Apakah query lintas-basis data mahal di SQL Server? Semua database berada dalam contoh yang sama.
sql-server
Jonathan Allen
sumber
sumber
Jawaban:
Maaf, saya tidak memiliki reputasi yang cukup untuk mengomentari pertanyaan, tetapi dari pengalaman saya jika aplikasi klien meningkatkan transaksi untuk permintaan yang menggunakan cross database bergabung maka itu akan mempromosikan transaksi untuk didistribusikan dan memiliki overhead transaksi DTC .
Overhead DTC dalam hal ini dapat dipandang sebagai negatif terhadap kinerja. Secara umum perbedaan akan diabaikan meskipun Microsoft menggambarkan transaksi DTC sebagai berikut:
... yang akan menyarankan penurunan kinerja jika server Anda tidak dapat menawarkan sumber daya yang diperlukan.
Hanya untuk memperjelas, artikel di atas menjelaskan transaksi lokal yang dipromosikan ketika sistem jarak jauh diperkenalkan, tetapi saya telah melihat ini menjadi kasus untuk transaksi di server yang sama ketika menggunakan kueri basis data lintas.
Seperti yang ditunjukkan oleh Thomas Stringer dalam komentarnya, akan ada overhead tambahan dalam otentikasi meskipun saya pikir karena ini akan didorong oleh SID akan ada overhead minimal di sana kecuali Anda harus menggunakan kredensial terpisah untuk mengakses database lain.
Jika ada perbedaan dalam pengaturan basis data yang menyebabkan overhead tambahan dalam gabungan yang dapat berdampak lebih besar dari saran sebelumnya - misalnya pengumpulan basis data. Database collation dapat bermanifestasi sebagai perbedaan fungsional, bukan hanya perbedaan kinerja.
Saya pikir Aaron memiliki argumen terkuat untuk kinerja dengan pengoptimal yang tidak memiliki keuntungan menggunakan hubungan untuk permintaan lintas-basis data sedangkan mandiri dalam database Anda dapat menggunakan hubungan untuk keuntungan Anda.
sumber
If a local transaction spans two or more databases on the same instance of the Database Engine, the instance uses an internal two-phase commit to commit all of the databases involved in the transaction.
- Jika Anda menemukan sebaliknya, silakan laporkan bug di Connect dengan langkah-langkah reproduksi yang jelas.Di SQL Server 2014, tabel yang dioptimalkan memori tidak mendukung transaksi lintas basis data. Anda tidak dapat mengakses database lain dari transaksi yang sama atau permintaan yang sama yang juga mengakses tabel yang dioptimalkan memori. Anda tidak dapat dengan mudah menyalin data dari tabel dalam satu database, ke tabel yang dioptimalkan memori di database lain. http://msdn.microsoft.com/en-us/library/dn584627(v=sql.120).aspx Transaksi yang didistribusikan dan lintas-basis data tidak didukung untuk mirroring database / AOAG. http://technet.microsoft.com/en-us/library/hh393530.aspx . Jika Anda akan menggunakan rantai kepemilikan, waspadai risiko keamanan http://msdn.microsoft.com/en-us/library/ms188676.aspx
sumber