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

Kapan menggunakan SQL_NO_CACHE

SQL_NO_CACHE

Cukup tambahkan SQL_NO_CACHE setelah bagian SELECT dari pernyataan SELECT dan sebelum daftar bidang. Kueri pertama di bawah ini akan menggunakan cache kueri jika diaktifkan dan kueri di-cache:

SELECT * FROM table WHERE search= 'keyword'; //lets take 1ms

Kueri kedua di bawah ini tidak akan menggunakan cache kueri:

SELECT SQL_NO_CACHE * FROM table WHERE search= 'keyword'; //lets take ~0.2ms at 2nd time

Ini sangat berguna saat membandingkan kueri; jika cache kueri diaktifkan meskipun kueri pertama mungkin memerlukan waktu, kueri kedua dan selanjutnya hampir instan. Dengan penggunaan SQL_NO_CACHE Anda dapat yakin bahwa cache kueri tidak digunakan dan dapat dengan aman membandingkan waktu hasil. Petunjuk SQL_NO_CACHE mematikan mekanisme cache kueri bawaan MySQL untuk kueri tertentu. Anda dapat membantu MySQL membuat cache kueri lebih efisien dengan menggunakan petunjuk ini pada kueri yang sangat dinamis (seperti pencarian kata kunci, atau laporan yang hanya berjalan setiap malam). Pastikan cache kueri diaktifkan jika tidak, hal ini tidak perlu dilakukan perintah.

apa SQL_CACHE dan SQL_NO_CACHE ?

Opsi SQL_CACHE dan SQL_NO_CACHE mempengaruhi cache hasil kueri dalam cache kueri. SQL_CACHE memberi tahu MySQL untuk menyimpan hasilnya dalam cache kueri jika dapat di-cache dan nilai variabel sistem query_cache_type adalah 2 atau DEMAND. Dengan SQL_NO_CACHE, server tidak menggunakan cache kueri. Itu tidak memeriksa cache kueri untuk melihat apakah hasilnya sudah di-cache, juga tidak men-cache hasil kueri. (Karena keterbatasan dalam pengurai, karakter spasi harus mendahului dan mengikuti kata kunci SQL_NO_CACHE; nonspasi seperti baris baru menyebabkan server memeriksa cache kueri untuk melihat apakah hasilnya sudah di-cache.)

NO_CACHE menurut saya dapat digunakan jika 'CACHE' diaktifkan dan data dalam db diperbarui secara dinamis, yaitu cache data db tidak dapat diandalkan, mis:menyimpan hash kata sandi pengguna, kami tidak dapat mengandalkan CACHE karena sering terjadi kemungkinan perubahan data

Pembaruan skenario yang berguna

1) paksa untuk tidak menggunakan cache untuk menguji kecepatan kueri



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana cara menyimpan 60 Boolean dalam Database MySQL?

  2. PDO MySQL:Gunakan PDO::ATTR_EMULATE_PREPARES atau tidak?

  3. Melampirkan database yang ada dengan MySQL

  4. Kueri gabungan dari basis data berbeda di Laravel Query Builder

  5. Buat kotak pilih subkategori di Ubah