-
Bisakah MySQL melakukan kueri secara wajar pada miliaran baris? -- MySQL dapat 'menangani' miliaran baris. "Cukup" tergantung pada kueri; mari kita lihat mereka.
-
Apakah InnoDB (MySQL 5.5.8) pilihan yang tepat untuk multi-miliar baris? -- 5.7 memiliki beberapa peningkatan, tetapi 5.5 cukup bagus, meskipun
hampir 68 tahun, dandi ambangtidak lagi didukung. -
Penyimpanan data terbaik untuk miliaran baris -- Jika yang Anda maksud adalah 'Mesin', maka InnoDB.
-
Seberapa besar database MySQL dapat diperoleh sebelum kinerjanya mulai menurun -- Sekali lagi, itu tergantung pada kuerinya. Saya dapat menunjukkan kepada Anda tabel baris 1K yang akan meleleh; Saya telah bekerja dengan tabel miliaran baris yang bersenandung.
-
Mengapa MySQL bisa lambat dengan tabel besar? -- pemindaian rentang mengarah ke I/O, yang merupakan bagian yang lambat.
-
Bisakah Mysql menangani tabel yang akan menampung sekitar 300 juta catatan? -- sekali lagi, ya. Batasnya sekitar satu triliun baris.
-
(untuk tabel InnoDB yang merupakan kasus saya) meningkatkan innodb_buffer_pool_size (mis., RAM hingga 80%). Juga, saya menemukan beberapa pengaturan penyetelan kinerja MySQL lainnya di sini di blog Percona -- ya
-
memiliki indeks yang tepat di atas meja (menggunakan EXPLAIN pada kueri) -- baiklah, mari kita lihat. Ada banyak kesalahan yang bisa dilakukan dalam kritis ini daerah.
-
mempartisi tabel -- "Mempartisi bukanlah obat mujarab!" Saya membahasnya di blog saya
-
MySQL Sharding -- Saat ini adalah DIY
-
Pengelompokan MySQL -- Saat ini jawaban terbaik adalah beberapa opsi berbasis Galera (PXC, MariaDB 10, DIY w/Oracle). "Replikasi Grup" Oracle adalah pesaing yang layak.
-
Partisi tidak mendukung
FOREIGN KEY
atau "global"UNIQUE
. -
UUID, pada skala yang Anda bicarakan, tidak hanya akan memperlambat sistem, tetapi juga mematikannya. UUID Tipe 1 mungkin bisa menjadi solusi.
-
Sisipkan dan indeks-build speed -- Terlalu banyak variasi untuk memberikan satu jawaban. Mari kita lihat
CREATE TABLE
tentatif Anda dan bagaimana Anda ingin memasukkan data. -
Banyak gabungan -- "Normalkan, tapi jangan terlalu menormalkan." Secara khusus, jangan menormalkan datetime atau float atau nilai "berkelanjutan" lainnya.
-
Buat tabel ringkasan
-
2,3 juta transaksi per hari -- Jika itu adalah 2,3 juta masukkan (30/detik), maka tidak ada banyak masalah kinerja. Jika lebih kompleks, mungkin diperlukan RAID, SSD, batching, dll.
-
menangani volume data seperti itu -- Jika sebagian besar aktivitas menggunakan baris "terbaru", maka buffer_pool akan 'menyimpan' aktivitas dengan baik, sehingga menghindari I/O. Jika aktivitasnya "acak", maka MySQL (atau siapa saja lain) akan memiliki masalah I/O.
-
Mengecilkan tipe data membantu dalam tabel seperti milik Anda. Saya ragu apakah Anda memerlukan 4 byte untuk menentukan
fuel_type
. Ada beberapa pendekatan 1-byte.