Apa batas atas catatan untuk tabel database MySQL. Saya bertanya-tanya tentang bidang peningkatan otomatis. Apa yang akan terjadi jika saya menambahkan jutaan catatan? Bagaimana cara menangani situasi semacam ini? Terima kasih!
Apa batas atas catatan untuk tabel database MySQL. Saya bertanya-tanya tentang bidang peningkatan otomatis. Apa yang akan terjadi jika saya menambahkan jutaan catatan? Bagaimana cara menangani situasi semacam ini? Terima kasih!
Jawaban:
tipe int mysql dapat melakukan beberapa baris: http://dev.mysql.com/doc/refman/5.0/id/numeric-types.html
unsigned int
nilai terbesar adalah 4,294,967,295
unsigned bigint
nilai terbesar adalah18,446,744,073,709,551,615
Nilai terbesar dari bilangan bulat tidak ada hubungannya dengan jumlah maksimum baris yang dapat Anda simpan dalam sebuah tabel.
Memang benar bahwa jika Anda menggunakan int atau bigint sebagai kunci utama Anda, Anda hanya dapat memiliki baris sebanyak jumlah nilai unik dalam tipe data kunci utama Anda, tetapi Anda tidak harus membuat kunci primer Anda bilangan bulat , Anda bisa menjadikannya CHAR (100). Anda juga bisa mendeklarasikan kunci utama lebih dari satu kolom.
Ada kendala lain pada ukuran tabel selain jumlah baris. Misalnya Anda dapat menggunakan sistem operasi yang memiliki batasan ukuran file. Atau Anda bisa memiliki hard drive 300GB yang dapat menyimpan hanya 300 juta baris jika setiap baris berukuran 1KB.
Batas ukuran basis data sangat tinggi:
http://dev.mysql.com/doc/refman/5.1/en/source-configuration-options.html
Mesin penyimpanan MyISAM mendukung 2 32 baris per tabel, tetapi Anda dapat membangun MySQL dengan --with-big-tables
opsi untuk membuatnya mendukung hingga 2 64 baris per tabel.
http://dev.mysql.com/doc/refman/5.1/en/innodb-restrictions.html
Mesin penyimpanan InnoDB tampaknya tidak memiliki batasan jumlah baris, tetapi memiliki batas ukuran tabel 64 terabyte. Berapa banyak baris yang cocok dengan ini tergantung pada ukuran setiap baris.
Saya sarankan, jangan pernah menghapus data. Jangan katakan jika tabel lebih panjang dari 1000 memotong ujung tabel. Harus ada logika bisnis nyata dalam rencana Anda seperti berapa lama pengguna ini tidak aktif. Misalnya, jika lebih dari 1 tahun maka letakkan di tabel yang berbeda. Anda akan memiliki ini terjadi mingguan atau bulanan dalam skrip pemeliharaan di tengah waktu yang lambat.
Ketika Anda mengalami banyak baris di tabel Anda maka Anda harus mulai sharding tabel atau partisi dan meletakkan data lama di tabel lama dengan tahun seperti users_2011_jan, users_2011_feb atau menggunakan angka untuk bulan itu. Kemudian ubah pemrograman Anda untuk bekerja dengan model ini. Mungkin membuat tabel baru dengan informasi lebih sedikit untuk merangkum data dalam kolom lebih sedikit dan kemudian hanya merujuk ke tabel dipartisi lebih besar ketika Anda membutuhkan informasi lebih lanjut seperti ketika pengguna melihat profil mereka. Semua ini harus dipertimbangkan dengan sangat hati-hati sehingga di masa depan tidak terlalu mahal untuk faktor ulang. Anda juga bisa menempatkan hanya pengguna yang datang ke situs Anda sepanjang waktu dalam satu tabel dan pengguna yang tidak pernah datang dalam kumpulan tabel yang diarsipkan.
Di InnoDB, dengan batas ukuran tabel 64 terabyte dan batas ukuran baris MySQL 65.535, mungkin ada 1.073.741.824 baris. Itu akan menjadi jumlah minimum rekaman yang menggunakan batas ukuran baris maksimum. Namun, lebih banyak catatan dapat ditambahkan jika ukuran baris lebih kecil.
Menurut bagian Skalabilitas dan Batas di http://dev.mysql.com/doc/refman/5.6/en/features.html , dukungan MySQL untuk database besar. Mereka menggunakan MySQL Server dengan database yang berisi 50 juta catatan. Beberapa pengguna menggunakan Server MySQL dengan 200.000 tabel dan sekitar 5.000.000.000 baris.
The maximum row size for a given table is determined by several factors:
Representasi internal tabel MySQL memiliki batas ukuran baris maksimum 65.535 byte, bahkan jika mesin penyimpanan mampu mendukung baris yang lebih besar. Kolom BLOB dan TEXT hanya berkontribusi 9 hingga 12 byte terhadap batas ukuran baris karena kontennya disimpan secara terpisah dari bagian baris lainnya.
Ukuran baris maksimum untuk tabel InnoDB, yang berlaku untuk data yang disimpan secara lokal dalam halaman database, sedikit kurang dari setengah halaman. Misalnya, ukuran baris maksimum sedikit kurang dari 8KB untuk ukuran halaman 16KB InnoDB default, yang ditentukan oleh opsi konfigurasi innodb_page_size. " Batas pada Tabel InnoDB ".
Tautan http://dev.mysql.com/doc/refman/5.7/id/column-count-limit.html
Batas Ukuran Baris
Ukuran baris maksimum untuk tabel tertentu ditentukan oleh beberapa faktor:
Representasi internal tabel MySQL memiliki batas ukuran baris maksimum 65.535 byte, bahkan jika mesin penyimpanan mampu mendukung baris yang lebih besar. Kolom BLOB dan TEXT hanya berkontribusi 9 hingga 12 byte terhadap batas ukuran baris karena kontennya disimpan secara terpisah dari bagian baris lainnya.
Ukuran baris maksimum untuk tabel InnoDB, yang berlaku untuk data yang disimpan secara lokal dalam halaman database, sedikit kurang dari setengah halaman untuk pengaturan 4KB, 8KB, 16KB, dan 32KB innodb_page_size. Misalnya, ukuran baris maksimum sedikit kurang dari 8KB untuk ukuran halaman 16KB InnoDB default. Untuk halaman 64KB, ukuran baris maksimum sedikit kurang dari 16KB. Lihat Bagian 15.8.8, “Batas pada Tabel InnoDB”.
Jika baris yang berisi kolom panjang variabel melebihi ukuran baris InnoDB maksimum, InnoDB memilih kolom panjang variabel untuk penyimpanan di luar halaman hingga baris tersebut sesuai dengan batas ukuran baris InnoDB. Jumlah data yang disimpan secara lokal untuk kolom panjang variabel yang disimpan di luar halaman berbeda menurut format baris. Untuk informasi lebih lanjut, lihat Bagian 15.11, “Penyimpanan Baris InnoDB dan Format Baris”.
Format penyimpanan yang berbeda menggunakan jumlah halaman header dan trailer yang berbeda, yang memengaruhi jumlah penyimpanan yang tersedia untuk baris.
Untuk informasi tentang format baris InnoDB, lihat Bagian 15.11, "Penyimpanan Baris InnoDB dan Format Baris", dan Bagian 15.8.3, "Struktur Baris Fisik Tabel InnoDB".
Untuk informasi tentang format penyimpanan MyISAM, lihat Bagian 16.2.3, “Format Penyimpanan Tabel MyISAM”.
http://dev.mysql.com/doc/refman/5.7/en/innodb-restrictions.html
Tidak ada batasan. Itu hanya tergantung pada memori bebas Anda dan ukuran file maksimum sistem. Tapi itu tidak berarti Anda tidak harus mengambil tindakan pencegahan dalam menangani penggunaan memori di database Anda. Selalu buat skrip yang dapat menghapus baris yang tidak digunakan atau yang akan menjaga jumlah total baris dalam angka tertentu, katakan seribu.