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

Kinerja KASUS di MySQL?

Hampir semua fungsi per-baris akan berdampak pada kinerja, satu-satunya pertanyaan sebenarnya adalah:"Apakah dampaknya cukup kecil untuk tidak perlu dikhawatirkan?".

Ini adalah sesuatu yang harus Anda temukan dengan mengukur daripada menebak. Administrasi basis data hanyalah aktivitas set-and-forget jika baik data maupun kueri Anda tidak pernah berubah. Jika tidak, Anda harus memantau kinerja secara berkala untuk memastikan tidak ada masalah yang terjadi.

Dengan "cukup kecil" dalam komentar di atas, maksud saya, Anda mungkin tidak perlu khawatir tentang dampak kinerja dari sesuatu seperti:

select * from friends where lowercase(lastname) = "smith"

jika Anda hanya memiliki tiga teman.

Dampak dari hal-hal ini menjadi lebih serius dengan bertambahnya ukuran meja. Misalnya, jika Anda memiliki seratus juta pelanggan dan Anda ingin menemukan semua pelanggan yang kemungkinan besar terkait dengan komputer, jangan coba-coba:

select name from customers where lowercase(name) like '%comp%'

Itu kemungkinan akan menjatuhkan DBA Anda seperti satu ton batu bata.

Salah satu cara kami telah memperbaikinya di masa lalu adalah dengan memasukkan redundansi ke dalam data. Menggunakan contoh pertama itu, kita akan menambahkan kolom tambahan bernama lowerlastname dan isi dengan nilai huruf kecil lastname . Kemudian indeks itu untuk tujuan pencarian dan select pernyataan menjadi sangat cepat, sebagaimana mestinya.

Dan apa pengaruhnya terhadap 3NF kita yang sangat kita cintai, saya dengar Anda bertanya? Jawabannya adalah "tidak banyak", jika Anda tahu apa yang Anda lakukan :-)

Anda dapat mengatur database sehingga kolom baru ini diisi oleh pemicu sisipkan/perbarui, untuk menjaga konsistensi data. Membongkar 3NF karena alasan kinerja dapat diterima, asalkan Anda memahami dan mengurangi konsekuensinya.

Demikian pula, kueri kedua tersebut dapat memiliki pemicu penyisipan/pembaruan yang mengisi kolom baru yang diindeks name_contains_comp setiap kali entri diperbarui atau disisipkan yang berisi teks yang relevan.

Karena sebagian besar basis data dibaca jauh lebih sering daripada yang ditulis, ini memindahkan biaya penghitungan ke penyisipan/pembaruan, amortisasi efektif di semua operasi tertentu. Pertanyaannya kemudian menjadi:

select name from customers where name_contains_comp = 'Y'

Sekali lagi, Anda akan menemukan kueri yang sangat cepat dengan biaya kecil dari penyisipan dan pembaruan yang sedikit lebih lambat.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Subquery berkorelasi MySQL dalam sintaks GABUNG

  2. java.lang.OutofMemorySpace:Java heap space sambil mengambil 120 juta baris dari database di pyspark

  3. MySQL Pilih GABUNG 3 Tabel

  4. nomor port server mysql

  5. Bagaimana Cara Menginstal MySQL di Windows 10? – Solusi Satu Atap Anda Untuk Menginstal MySQL