Apa batasan besar yang harus saya harapkan dari Linked SQL Server?

9

Produk kami didasarkan pada Microsoft SQL Server. Saat ini, kami menggunakan tiga database, dan selalu menggunakan mereka pada satu contoh SQL Server.

Tiga basis data adalah OLTP, OLAP, dan audit. Basis data OLAP memiliki data masuk yang besar tentang EOD dari OLTP dan audit, menggunakan kueri basis data lintas.

Pertanyaan

Jika kami menempatkan tiga database ini ke tiga contoh Edisi Standar yang terpisah di dalam satu server fisik, dan mengikat mereka bersama-sama menggunakan fitur Linked Server dari SQL Server:

  1. Seberapa transparankah kode aplikasi itu? Berapa banyak perubahan yang harus saya harapkan?
  2. Data masuk ke OLAP berjumlah dalam baris 50k-100r, 200-500MB payload per EOD. Berapa penurunan kinerja yang harus saya harapkan?
  3. Apa batasan besar lain yang harus saya harapkan?

Latar Belakang

Saat ini kami menawarkan klien potensial pertama kami dengan 500+ pengguna bersamaan.

Kami sedang menyusun spesifikasi server, yang mencakup 64 core dan 256GB RAM. Agar SQL Server dapat memanfaatkan semua sumber daya yang berlimpah itu, klien harus membeli Enterprise Edition, yang untuk SQL Server 2016 hanya tersedia dalam lisensi berbasis per-core.

Kami takut biaya lisensi saja (64 x $ 7400) akan menurunkannya. Jadi saya berpikir untuk membagi database menjadi tiga contoh Edisi Standar, dan minta mereka terhubung bersama, berharap fitur tautan akan transparan dari kode aplikasi.

bungrudi
sumber

Jawaban:

14

Seberapa transparankah kode aplikasi itu? Berapa banyak perubahan yang harus saya harapkan?

Tidak transparan sama sekali. Harapkan perubahan besar.

Anda harus siap untuk degradasi kinerja yang sangat besar.

Query Terdistribusi (kerangka kerja untuk server yang ditautkan) menggunakan model OLEDB umum apa pun server di ujung sana. Memang benar bahwa target SQL Server mungkin dapat menawarkan informasi yang lebih lengkap (metadata, statistik dll.), Tetapi hasilnya masih jauh dari terintegrasi atau mampu sebagai operasi database asli.

Kueri jarak jauh memiliki reputasi yang pantas untuk kinerja yang lambat, dan pilihan rencana yang buruk oleh pengoptimal. Pernyataan yang mengubah data (hapus, masukkan, perbarui, gabungkan) sangat rentan karena model dasar sering berupa kursor.


Jika Anda tidak perlu melakukan kueri instance lintas ad-hoc , Anda mungkin dapat mengatur sendiri setiap permintaan yang disimpan untuk kinerja yang dapat diterima, tetapi ini banyak pekerjaan, dan kesuksesan sama sekali tidak dijamin.

Untuk operasi massal lintas misalnya, Anda akan jauh lebih baik menggunakan operasi massal nyata ( bcp, BULK INSERT, SSIS ... dll.) Antara contoh daripada menggunakan server yang terhubung.


Semua yang dikatakan, ide dasar tampaknya jauh lebih banyak masalah daripada nilainya bagi saya. Tentukan perangkat keras yang akan berfungsi dalam batasan Edisi Standar; atau, jika klien membutuhkan kinerja yang lebih tinggi, dapatkan server yang lebih besar dan gunakan Edisi Perusahaan.

Paul White 9
sumber