SQL Server Express untuk Database Produksi?

14

Kami akan meluncurkan aplikasi transaksional web / internal ganda di mana setiap klien memiliki database mereka sendiri. Setiap basis data sangat kecil - masing-masing di bawah 50MB, jadi kami bertanya-tanya apakah masuk akal untuk menggunakan SQL Express 2008 alih-alih SQL Server lengkap.

Ini tampaknya memiliki keuntungan mendistribusikan disk I / O di seluruh server sekaligus menghemat $$$ besar (karena drive 15K kecil dan server dual core bekas keduanya murah). Jika pada suatu saat kita membutuhkan terlalu banyak server, kita dapat meningkatkan ke SQL Server ... tetapi dengan puluhan pengguna internal ini sepertinya terlalu mahal sekarang (terutama karena kita akan memerlukan kotak failover).

Memori 1GB dan penggunaan 4 core pada satu prosesor tidak terdengar terlalu ketat mengingat ukuran basis data kami yang kecil. Kami tidak akan pernah memiliki lebih dari ~ 200 pengguna secara bersamaan, dan sebagian besar operasi akan lebih bersifat transaksional (yang tampaknya lebih menyukai banyak disk kecepatan tinggi daripada RAM / CPU yang berat, bukan?)

Apakah saya kehilangan kelebihan dari SQL Server Standard yang dapat membenarkan investasi tambahan $ 5-20K pada awalnya?

Bip bip
sumber

Jawaban:

17

Edisi lain dari server SQL memberi Anda hal-hal seperti Agen SQL sehingga Anda dapat menjadwalkan pemeliharaan basis data dan pekerjaan lainnya.

Selama basis data Anda dapat memenuhi batas-batas edisi Express, Anda akan baik-baik saja.

SQL server menyukai banyak RAM. Lebih banyak lebih baik. Karena SQL Server tidak dapat memuat data ke dalam cache yang akan menambah beban pada disk. Anda harus melihat SQL Server Edisi Web atau Workstation. Edisi-edisi tersebut memiliki batas yang lebih tinggi daripada edisi Express, tetapi biayanya kurang dari Edisi Standar.

Jika Anda memulai dengan edisi Express, Anda selalu dapat meningkatkan nanti ke Edisi Standar setelah Anda membeli lisensi.

mrdenny
sumber
+1 tidak dapat menambahkan hal lain ke respons itu
Nick Kavadias
Saya tidak berpikir workgroup dan lisensi edisi web dapat digunakan untuk aplikasi bisnis yang di-hosting eksternal.
Akash Kava
1
Lisensi CPU tersedia untuk semua edisi (kecuali Express yang tidak memerlukan lisensi CPU) yang berarti Anda dapat menggunakannya untuk situs web yang menghadap publik. Berikut tautan ke Lisensi CPU Workgroup bit.ly/KDLDR . Saya tidak dapat menemukan Edisi Web dengan mudah, tetapi VAR mana pun harus dapat menyediakannya tanpa banyak melihat-lihat.
mrdenny
Saya juga menyarankan memulai dengan sesuatu di atas Express, dan berpindah dari express ke edisi lain kadang-kadang bisa sulit.
DanBig
3
SQL Express adalah mesin yang sama persis dengan edisi lainnya, hanya dengan batas ukuran yang berlaku. Pindah dari Express ke edisi lain hanyalah masalah memisahkan basis data dari edisi Express dan melampirkannya ke instance lain yang menjalankan edisi lain.
mrdenny
15

Beberapa masalah produksi dan penyelesaian yang saya alami dengan edisi Express:

Cadangan Terjadwal

SSIS

Pembuatan profil

  • Tidak ada profiler SQL
  • Penanganan masalah: coba SqlProfiler Untuk Edisi Express
  • Peringatan: Saya belum menemukan itu selalu berguna dalam menyelesaikan keadaan darurat produksi, seperti ketika sqlexpress mengambil 100% dari kapasitas prosesor server. Saya tidak bisa membuat profiler menghasilkan jejak dalam satu kasus seperti itu.
  • Lihat juga: Profiler apa yang digunakan dengan sql express?
mika
sumber
2
  1. Jika Anda membaca Lisensi SQL Server, Anda tidak perlu membeli lisensi tambahan untuk server pasif jika hanya digunakan untuk failover dan tidak melayani permintaan sampai server pertama Anda gagal.

  2. Kami telah menggunakan SQL Server Express untuk waktu yang cukup lama, dan itu baik dan jauh lebih baik dari MSDE sebelumnya, kami memiliki lebih dari 200 koneksi simulaten, tetapi kami hanya memiliki satu database ukuran 2GB, dan semuanya lancar. Kami tidak pernah memiliki masalah asalkan kami menghindari bergabung mahal dan kami melakukan pengindeksan yang baik. Sekarang kami menggunakan SQL Standard, tetapi sampai ukuran database Anda lebih dari 4GB dan jumlah pengguna Anda kurang dari 200-500, Anda tentu dapat hidup dengan SQL Express.

  3. SQL Server Express menggunakan sedikit jejak memori kurang ~ 200MB di mana lagi Edisi standar menggunakan ~ 1.5GB, mungkin karena edisi standar akan melakukan banyak caching. Kueri Anda akan lebih lambat di Express dalam beberapa milidetik dibandingkan dengan edisi standar. Sayangnya edisi Express tidak menggunakan CPU multi-core (fitur terbatas) sehingga tidak akan banyak membantu apakah Anda memiliki 2 inti atau 4 inti.

Akash Kava
sumber
Saya pikir SSE 2008 menggunakan multi-core (hingga 4)?
Bip bip
@LuckyLindy Standard akan menggunakan hingga 4 soket, dengan banyak inti per soket seperti yang Anda miliki.
mrdenny
"tetapi sampai ukuran basis data Anda lebih dari 4GB" 4GB adalah batasan per satu instance. Saya tidak dapat mengingat bahwa ada batasan pada jumlah instance yang digunakan
Gennady Vanin Геннадий Ванин
2

LuckyLindy - Saya mendorong Anda untuk berhenti sesaat dan memverifikasi bahwa Anda tidak memerlukan Agen SQL. Kau menulis:

Kami akan meluncurkan aplikasi transaksional web / internal ganda di mana setiap klien memiliki database mereka sendiri. Setiap basis data sangat kecil - masing-masing di bawah 50MB, jadi kami bertanya-tanya apakah masuk akal untuk menggunakan SQL Express 2008 alih-alih SQL Server lengkap.

Apa rencana Anda untuk backup? Anda tidak harus menggunakan Agen SQL tapi itu pasti membuat hidup DBA lebih mudah. Anda bisa menulis T-SQL / SMO / PowerShell / skrip apa pun yang melakukan pencadangan Anda dan kemudian jalankan melalui sqlcmd atau PowerShell menggunakan Tugas Terjadwal.

Apa rencana Anda untuk pemeliharaan basis data? Seiring waktu, basis data tersebut perlu didefrag dan diperiksa untuk konsistensi. Edisi Standar memiliki semua jenis barang untuk memudahkan ini sedangkan, di Express, Anda harus bekerja (lagi dengan skrip dan tugas terjadwal).

Bagaimana Anda akan diberitahu tentang masalah di server? Agen membantu di sini dengan Peringatan untuk memberi tahu Anda ketika log sudah penuh, disk sedang diisi, dll.


Ini adalah tugas-tugas kritis tipe SQL Server DBA. Menjalankan Express untuk aplikasi in-house adalah satu hal, tetapi begitu Anda mulai memberi tahu kami bahwa Anda hosting ini untuk klien, saya khawatir :)


Bagian 2 dari ini menanyakan berapa banyak klien yang Anda rencanakan untuk mendukung ini - baik pada saat peluncuran maupun setelah satu tahun? Jika Anda mengatakan, "100 klien", maka 100 basis data 50MB tidak akan mencukupi pada Express - Anda hanya tidak memiliki cukup memori. Heck - tergantung pada berapa banyak delta yang Anda miliki, Anda mungkin maks pada 15 DBs, saya tidak tahu.

Kami tidak akan pernah memiliki lebih dari ~ 200 pengguna secara bersamaan, dan sebagian besar operasi akan lebih bersifat transaksional (yang tampaknya lebih menyukai banyak disk kecepatan tinggi daripada RAM / CPU yang berat, bukan?)

Operasi transaksional seperti INSERT masih ditulis ke memori, jadi jangan berharap bahwa Anda membutuhkan lebih sedikit dukungan memori. Bahkan, tergantung pada berapa banyak INSERT yang Anda lakukan, Anda mungkin memiliki kebutuhan memori yang lebih besar daripada kebanyakan dengan jumlah pengguna itu. Jika Anda memuat banyak data yang orang tidak akan benar-benar menggunakan maka masih menempati memori. Anda mungkin mengalami masalah pertentangan antara "data yang sering ditanyakan pengguna" dan "data yang dimuat pengguna yang tidak akan ditanyakan oleh siapa pun untuk sementara waktu". SQL melindungi kami dengan menjaga data yang orang-orang tanyakan lebih sering dalam memori lebih lama tetapi Anda masih akan memiliki pendapat.

Pada titik ini, saya mengoceh lol. Dan 200 pengguna secara bersamaan tidak cocok dengan saya baik untuk Express. Katakanlah 64k adalah persyaratan memori koneksi rata-rata, berapa banyak koneksi yang akan dibuat aplikasi Anda? Apakah Anda akan menggunakan pooling koneksi?

Secara keseluruhan, perasaan saya setelah membaca deskripsi Anda mengatakan, "Tidak - Edisi Ekspres tidak cukup kuat." Dan saya benci Edisi Workgroup - pikir itu adalah kesepakatan yang buruk - jadi Standar tampaknya tepat untuk saya.

Scott Whigham
sumber
2
Scott - Jawaban yang bagus. Untuk maksud Anda ... SQL Server Express sebenarnya tidak memiliki batas ukuran penyimpanan di seluruh database, Anda tidak dapat memiliki satu database dengan lebih dari 4GB data. Sebagai tes saya membuat 10.000 100MB database (1TB) pada satu server, dan SQL Server Express berjalan dengan baik. Juga, memori yang terkait dengan setiap koneksi tidak dihitung terhadap total 1GB. Saya setuju bahwa mengelola semua basis data ini mungkin sedikit menyusahkan ... tetapi karena kita akan benar-benar memiliki 1000-an basis data, kita tetap akan memerlukan skrip (tidak ada cara saya ingin menyentuh basis data secara manual kecuali jika itu menjadi korup).
Beep beep
+1, saya setuju bahwa itu adalah jawaban yang bagus tetapi saya juga menaikkannya
Gennady Vanin Геннадий Ванин
1

Sudahkah Anda mempertimbangkan untuk menggunakan salah satu DBMS gratis (MySQL, PostreSQL ...)? Itu akan mengurangi masalah lisensi Anda?

Jika itu bukan pilihan, SQL Server Express sepertinya solusi yang baik.

sleske
sumber
2
Kami benar-benar menjalankan tes kinerja terhadap semua database utama tahun lalu - MySQL, PostgreSQL, Firebird, DB2, Oracle, SQL Server, SQL Server Express, dan SQL Desktop. Kami menemukan bahwa DB2, Oracle, dan SQL Server (dan Express, tetapi bukan Desktop) menghapus MySQL dan PostgreSQL di Windows untuk operasi transaksional kami - dengan faktor 2. 1/2 kinerja berarti dua kali # server. Ketika dihosting di Linux, MySQL dan PostgreSQL melakukan sedikit lebih baik, tetapi masih tidak setara.
Bip bip
1

Ini tentu dapat digunakan untuk aplikasi produksi yang signifikan. Kami telah menggunakannya di lebih dari 1500 klinik kesehatan semua dengan contoh SQL Server Express diinstal untuk memproses jutaan transaksi setiap hari. Anda dapat dengan mudah mengatasi kerugian SQL Server Agent dengan menggunakan salah satu dari berikut ini:

  1. Produk pihak ketiga seperti SQLAutomate
  2. Penjadwal Tugas Windows
  3. SQL Server Edisi Standar atau Perusahaan dengan kemampuan server master yang diinstal 1 dan 2 sangat murah atau gratis. 3 itu mahal kecuali Anda sudah memilikinya di lingkungan Anda.

Lihat presentasi luar biasa Michael Otey (google it) di "Menggunakan SQL Server Express dalam Produksi".

musim dingin pacific
sumber
Sebenarnya itu adalah pos 7 tahun :)
BaronSamedi1958