Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Menangani data yang sangat besar dengan mysql

  • 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 6 8 tahun, dan di ambang tidak 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.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Pilih 10 Catatan Teratas untuk Setiap Kategori di MySQL

  2. Mengambil hanya sejumlah baris tetap di MySQL

  3. Praktik terbaik untuk menyimpan hash md5 secara efisien di mysql

  4. SQL GABUNG dua tabel dengan AVG

  5. Permintaan MySQL untuk mencari bidang dengan string JSON