Saya setelah beberapa konfirmasi dari ide ini untuk memperbaiki database berkinerja buruk atau saran yang lebih baik jika ada yang memilikinya. Selalu terbuka untuk saran yang lebih baik.
Saya memiliki basis data yang sangat besar (20+ juta catatan tumbuh sekitar 1/2 juta per hari) yang menggunakan GUID sebagai PK.
Pengawasan pada bagian saya tetapi PK berkerumun di SQL server dan menyebabkan masalah kinerja.
Alasan untuk panduan - database ini sebagian disinkronkan dengan 150 database lain sehingga PK harus unik. Sinkronisasi tidak dikelola oleh SQL Server, melainkan ada proses kustom yang dibangun yang membuat data tetap sinkron untuk persyaratan sistem - semua didasarkan pada GUID itu.
Masing-masing dari 150 basis data jauh tidak menyimpan data lengkap seperti yang disimpan di Database SQL pusat. mereka hanya menyimpan sebagian dari data yang sebenarnya mereka butuhkan, dan data yang dibutuhkan tidak unik bagi mereka (10 dari 150 basis data mungkin memiliki beberapa catatan yang sama dari basis data situs lain misalnya - mereka bagikan). Juga - data sebenarnya dihasilkan di lokasi terpencil - bukan di titik pusat - maka kebutuhan untuk GUID.
Basis data pusat digunakan tidak hanya untuk menjaga semuanya tetap sinkron, tetapi permintaan dari 3000+ pengguna akan dieksekusi terhadap database terfragmentasi yang sangat besar. Ini sudah merupakan masalah besar dalam pengujian awal.
Untungnya kita belum tayang - jadi saya bisa membuat perubahan dan membuat offline jika diperlukan yang setidaknya adalah sesuatu.
Kinerja basis data jauh bukanlah masalah - himpunan bagian data cukup kecil dan database biasanya tidak pernah mencapai di atas 1GB secara total. Catatan dimasukkan kembali ke sistem utama secara teratur dan dihapus dari BD yang lebih kecil ketika tidak lagi diperlukan.
Kinerja pusat DB yang merupakan penjaga semua catatan menyedihkan - karena GUID berkerumun sebagai kunci utama untuk banyak catatan. Fragmentasi indeks tidak aktif.
Jadi - pemikiran saya untuk memperbaiki masalah kinerja adalah membuat kolom baru - IDENTITAS BIGINT yang tidak ditandatangani (1,1) dan kemudian mengubah PK yang dikelompokkan dari tabel kolom BIGINT.
Saya akan membuat indeks Unik Non Clustered pada bidang GUID yang merupakan kunci utama.
Remote 150 database yang lebih kecil tidak perlu tahu tentang PK baru pada database SQL Server Pusat - ini murni akan digunakan untuk mengatur data dalam database dan menghentikan kinerja buruk dan fragmentasi.
Apakah ini bekerja dan meningkatkan kinerja database SQL pusat dan mencegah neraka masa depan indeks fragmentasi (ke tingkat tertentu)? atau apakah saya melewatkan sesuatu yang sangat penting di sini yang akan melompat dan menggigit saya dan menyebabkan lebih banyak kesedihan?
int
habis dalam 4255 hari (11,5 tahun). Jika dia melakukan itu, dia hanya akan menyalahkanmu dalam 11,5 tahun;)