Kapasitas tabel maksimum dalam SQL Server 2008

11

Saya memiliki aplikasi yang menyisipkan lebih dari 1 miliar baris setiap tahun ke dalam tabel. Tabel ini berisi beberapa varchardan bigintkolom dan satu kolom gumpalan juga.

Baris 1 miliar terdiri dari data riwayat yang disimpan untuk tujuan pelacakan. Jadi saya bertanya-tanya apakah akan ada batasan kapasitas tabel jika saya melanjutkan dalam struktur ini menurut artikel MSDN ini tentang ukuran tabel maksimum .

Apakah ukuran file data yang disebutkan dalam tautan itu merujuk ke grup file data tabel?

CELAH
sumber
@marc_s terima kasih telah menangkapnya. merasa bebas untuk bergabung dengan kami di The Heap di mana, antara lain, kami membawa perhatian kolektif untuk ini
JNK
Berapa ukuran maksimum setiap baris?
Nick Chammas

Jawaban:

6

Tidak ada batasan praktis kecuali ruang disk. Saya membaca tabel yang Anda tautkan sepenuhnya dan memeriksanya.

Jika Anda perlu pergi di atas 16TB, Anda perlu beberapa file (prosedur sederhana).

usr
sumber
Saya kira ini dapat dicapai dengan mempartisi tabel dan meminta partisi untuk menggunakan grup file yang berbeda, jika saya benar?
GAP
1
Itu bahkan tidak perlu. Cukup tambahkan file baru (ke grup file yang ada). SQL Server akan mulai mengisi semua file secara merata. Jika satu file tidak dapat tumbuh lagi, itu hanya akan menumbuhkan file lainnya.
usr
2

sebuah tabel di sql server 2008 dapat menangani sejumlah besar catatan dan seperti yang disebutkan oleh @ usr, ini tergantung pada ruang disk tetapi direkomendasikan bahwa jika tabel Anda memiliki banyak baris dan terus bertambah agar Anda menggunakan Partitioned Table http://technet.microsoft. com / en-us / library / dd578580 (v = sql.100) .aspx

Ketika tabel database tumbuh dalam ukuran hingga ratusan gigabyte atau lebih, itu bisa menjadi lebih sulit untuk memuat data baru, menghapus data lama, dan mempertahankan indeks

info lebih lanjut tentang itu

http://msdn.microsoft.com/en-us/library/ms190787.aspx

dan bagaimana mengimplementasikannya http://blog.sqlauthority.com/2008/01/25/sql-server-2005-database-table-partitioning-tutorial-how-to-horizontal-partition-database-table/

AmmarR
sumber
Anda harus benar - benar berhati-hati dalam mempartisi. Fungsi dan kunci harus dipertimbangkan dengan hati-hati, serta kasus penggunaan. Bidang logis untuk dipartisi tidak boleh digunakan dalam kueri apa pun, yang akan mematikan kinerja.
JNK
Benar tetapi miliaran baris dalam satu tabel juga akan mempengaruhi kinerja, ada juga opsi untuk membagi data Anda dalam banyak tabel, misalnya tabel terpisah untuk setiap tahun dan jika Anda ingin melihat semua data, Anda dapat menggunakan tampilan tetapi pada Setidaknya unsert dan pembaruan akan lebih cepat di setiap tabel
AmmarR
menyisipkan pada tabel besar tidak selalu lambat, itu tergantung pada kunci dan indeks. Saya melakukan beban bulanan sekitar 30m baris ke dalam tabel yang memiliki 700m baris yang ada, dan kami tidak melakukan partisi apa pun. Saya memang mencoba mempartisi tetapi menyebabkan lebih banyak masalah daripada yang dipecahkan. Ini sebenarnya pertanyaan jika Anda ingin memeriksanya.
JNK
Saya sedang berpikir tentang memindahkan data histori saya ke tabel terpisah dan membuat tampilan gabungan sehingga dapat digunakan oleh aplikasi ketika membutuhkan histori permintaan + data terbaru yaitu sekitar kurang dari 25% dari kueri yang saya miliki dalam sistem. Apakah ini akan lebih efisien daripada memiliki banyak file data atau membuat tabel berdasarkan kolom yang menandai data sebagai yang terbaru? Dari operasi IO mana yang lebih efisien? karena keraguan saya adalah itu akan sama dari perspektif IO di kedua solusi.
GAP
pendekatan apa pun yang Anda lakukan memiliki praktik terbaik yang dapat menjadikannya baik atau buruk, maksud saya jika Anda memiliki banyak tabel, kueri Anda akan rumit dan sulit untuk dipertahankan, jika Anda memiliki satu tabel dan menggunakan tabel partisi ada perbedaan pertimbangan seperti edisi sql Anda harus enterprise dll, memiliki banyak file data direkomendasikan untuk operasi IO yang lebih baik tetapi juga memiliki praktik terbaiknya, untuk kinerja sql tidak ada jalan lurus ke depan ...
AmmarR
0

Mungkin Tampilan yang Dipartisi akan berfungsi.

Dari Menggunakan Menggunakan Partisi Tampilan Artikel MSDN :

Tampilan yang dipartisi memungkinkan data dalam tabel besar untuk dipecah menjadi tabel anggota yang lebih kecil. Data dipartisi antara tabel anggota berdasarkan rentang nilai data di salah satu kolom. Rentang data untuk setiap tabel anggota didefinisikan dalam batasan PERIKSA yang ditentukan pada kolom partisi. Pandangan yang menggunakan UNION ALL untuk menggabungkan pilihan semua tabel anggota ke dalam satu set hasil tunggal kemudian ditentukan. Ketika pernyataan SELECT yang mereferensikan tampilan menentukan kondisi pencarian pada kolom partisi, optimizer kueri menggunakan PERIKSA definisi kendala untuk menentukan tabel anggota mana yang berisi baris.

Saya tidak yakin bagaimana perbedaannya dari Paritioned Table yang diberikan AmmarR info tentang jawabannya.

Adam Porad
sumber