Rumah pangkalan data tutorial mysql MySQL 查询缓存

MySQL 查询缓存

Jun 01, 2016 pm 01:14 PM
pelanggan pelayan rancangan

MySQL查询执行流程

wKioL1NWdF-g-z3mAATdFkLRKYs670.jpg

查询流程

  1. 客户端发送一条查询给服务器;

  2. 服务器先检查查询缓存,如果命中了缓存,则立即返回存储在缓存中的结果;否则,进入下一阶段;

  3. 服务器进行SQL解析、预处理,再由优化器生成对应的执行计划;

  4. MySQL根据优化器生成的执行计划,调用存储引擎的API来执行查询;

  5. 将结果返回给客户端;

查询缓存

  • 用于保存MySQL查询语句返回的完整结果,被命中时,MySQL会立即返回结果,省去解析、优化和执行等阶段;

  • MySQL保存结果于缓存中,把select语句本身做hash计算,计算的结果作为key,查询结果作为value;

  • 查询语句的大小写会影响缓存的存储和命中,故需保持查询语句的大小写一致性;

何种语句不会被缓存

  • 查询语句中有一些不确定数据时,不会缓存,如now(),current_time()等

  • 若查询中包含用户自定义函数,存储函数,用户变量,临时表,mysql库中系统表,或者任何包含权限的表,一般都不会缓存

缓存会带来额外开销,因为:

  • 读查询在开始之前必须先检查是否命中缓存;

  • 若某个读查询可以被缓存且未被缓存,那么当完成执行后,MySQL会将其结果存入查询缓存;

  • 对写操作也有影响,因为当写入数据时,MySQL必须将对应表的所有缓存都设置失效,这在缓存内存较大时将导致很大的系统消耗;

  • 故查询缓存并非必需,其效率取决于全部查询中开销较大的查询是否能被缓存命中;

缓存相关变量查询

wKioL1NWdJHxnapRAAhZy1ojoo0875.jpg

如何判断缓存命中率

缓存命中率相关的变量

wKiom1NWdOSDdJESAASKt6x2euE164.jpg

计算缓存命中率

wKiom1NWdQCRW5roAANvlDJ4hnM274.jpg

缓存优化的思路

  • 批量写入而非多次单个写入;

  • 缓存空间不宜过大,因为大量缓存同时失效会导致服务器假死;

  • 必要时,使用sql_cache和sql_no_cache手动控制缓存;

  • 对写密集型的应用场景来说,禁用缓存反而能提高性能

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Pelanggan VMware Horizon tidak boleh dibuka [Betulkan] Pelanggan VMware Horizon tidak boleh dibuka [Betulkan] Feb 19, 2024 pm 11:21 PM

VMware Horizon Client membantu anda mengakses desktop maya dengan mudah. Walau bagaimanapun, kadangkala infrastruktur desktop maya mungkin mengalami masalah permulaan. Artikel ini membincangkan penyelesaian yang boleh anda ambil apabila klien VMware Horizon gagal dimulakan dengan jayanya. Mengapa klien VMware Horizon saya tidak boleh dibuka? Apabila mengkonfigurasi VDI, ralat mungkin berlaku jika klien VMWareHorizon tidak dibuka. Sila sahkan bahawa pentadbir IT anda telah memberikan URL dan bukti kelayakan yang betul. Jika semuanya baik-baik saja, ikuti penyelesaian yang dinyatakan dalam panduan ini untuk menyelesaikan isu tersebut. Betulkan Klien VMWareHorizon Tidak Dibuka Jika VMW tidak dibuka pada komputer Windows anda

Pelanggan VMware Horizon membeku atau terhenti semasa menyambung [Betulkan] Pelanggan VMware Horizon membeku atau terhenti semasa menyambung [Betulkan] Mar 03, 2024 am 09:37 AM

Apabila menyambung ke VDI menggunakan klien VMWareHorizon, kami mungkin menghadapi situasi di mana aplikasi membeku semasa pengesahan atau blok sambungan. Artikel ini akan meneroka isu ini dan menyediakan cara untuk menyelesaikan situasi ini. Apabila klien VMWareHorizon mengalami masalah pembekuan atau sambungan, terdapat beberapa perkara yang boleh anda lakukan untuk menyelesaikan isu tersebut. Betulkan klien VMWareHorizon membeku atau tersekat semasa menyambung Jika klien VMWareHorizon membeku atau gagal menyambung pada Windows 11/10, ikuti penyelesaian yang dinyatakan di bawah: Semak sambungan rangkaian Mulakan semula klien Horizon Semak status pelayan Horizon Kosongkan cache klien Betulkan Ho

Bagaimana untuk menyelesaikan masalah bahawa carian eMule tidak dapat menyambung ke pelayan Bagaimana untuk menyelesaikan masalah bahawa carian eMule tidak dapat menyambung ke pelayan Jan 25, 2024 pm 02:45 PM

Penyelesaian: 1. Semak tetapan eMule untuk memastikan anda telah memasukkan alamat pelayan dan nombor port yang betul 2. Semak sambungan rangkaian, pastikan komputer disambungkan ke Internet, dan tetapkan semula penghala; adalah dalam talian. Jika tetapan anda adalah Jika tiada masalah dengan sambungan rangkaian, anda perlu menyemak sama ada pelayan dalam talian 4. Kemas kini versi eMule, lawati tapak web rasmi eMule, dan muat turun versi terkini perisian eMule; 5. Dapatkan bantuan.

Penyelesaian kepada ketidakupayaan untuk menyambung ke pelayan RPC dan ketidakupayaan untuk memasuki desktop Penyelesaian kepada ketidakupayaan untuk menyambung ke pelayan RPC dan ketidakupayaan untuk memasuki desktop Feb 18, 2024 am 10:34 AM

Apakah yang perlu saya lakukan jika pelayan RPC tidak tersedia dan tidak boleh diakses pada desktop Dalam beberapa tahun kebelakangan ini, komputer dan Internet telah menembusi setiap sudut kehidupan kita. Sebagai teknologi untuk pengkomputeran berpusat dan perkongsian sumber, Panggilan Prosedur Jauh (RPC) memainkan peranan penting dalam komunikasi rangkaian. Walau bagaimanapun, kadangkala kita mungkin menghadapi situasi di mana pelayan RPC tidak tersedia, mengakibatkan ketidakupayaan untuk memasuki desktop. Artikel ini akan menerangkan beberapa kemungkinan punca masalah ini dan memberikan penyelesaian. Pertama, kita perlu memahami mengapa pelayan RPC tidak tersedia. Pelayan RPC ialah a

Penjelasan terperinci mengenai fius pemasangan CentOS dan pelayan pemasangan CentOS Penjelasan terperinci mengenai fius pemasangan CentOS dan pelayan pemasangan CentOS Feb 13, 2024 pm 08:40 PM

Sebagai pengguna LINUX, kami selalunya perlu memasang pelbagai perisian dan pelayan pada CentOS Artikel ini akan memperkenalkan secara terperinci cara memasang fius dan menyediakan pelayan pada CentOS untuk membantu anda menyelesaikan operasi yang berkaitan dengan lancar. CentOS installation fuseFuse ialah rangka kerja sistem fail ruang pengguna yang membenarkan pengguna yang tidak mempunyai hak untuk mengakses dan mengendalikan sistem fail melalui sistem fail tersuai Memasang fius pada CentOS adalah sangat mudah, cuma ikuti langkah berikut: 1. Buka terminal dan Log masuk sebagai pengguna akar. 2. Gunakan arahan berikut untuk memasang pakej fius: ```yuminstallfuse3. Sahkan gesaan semasa proses pemasangan dan masukkan `y` untuk meneruskan. 4. Pemasangan selesai

Bagaimana untuk mengkonfigurasi Dnsmasq sebagai pelayan geganti DHCP Bagaimana untuk mengkonfigurasi Dnsmasq sebagai pelayan geganti DHCP Mar 21, 2024 am 08:50 AM

Peranan geganti DHCP adalah untuk memajukan paket DHCP yang diterima ke pelayan DHCP lain pada rangkaian, walaupun kedua-dua pelayan berada pada subnet yang berbeza. Dengan menggunakan geganti DHCP, anda boleh menggunakan pelayan DHCP berpusat di pusat rangkaian dan menggunakannya untuk menetapkan alamat IP secara dinamik kepada semua subnet/VLAN rangkaian. Dnsmasq ialah pelayan protokol DNS dan DHCP yang biasa digunakan yang boleh dikonfigurasikan sebagai pelayan geganti DHCP untuk membantu mengurus konfigurasi hos dinamik dalam rangkaian. Dalam artikel ini, kami akan menunjukkan kepada anda cara mengkonfigurasi dnsmasq sebagai pelayan geganti DHCP. Topik Kandungan: Topologi Rangkaian Mengkonfigurasi Alamat IP Statik pada Geganti DHCP D pada Pelayan DHCP Berpusat

Panduan Amalan Terbaik untuk Membina Pelayan Proksi IP dengan PHP Panduan Amalan Terbaik untuk Membina Pelayan Proksi IP dengan PHP Mar 11, 2024 am 08:36 AM

Dalam penghantaran data rangkaian, pelayan proksi IP memainkan peranan penting, membantu pengguna menyembunyikan alamat IP sebenar mereka, melindungi privasi dan meningkatkan kelajuan akses. Dalam artikel ini, kami akan memperkenalkan panduan amalan terbaik tentang cara membina pelayan proksi IP dengan PHP dan menyediakan contoh kod khusus. Apakah pelayan proksi IP? Pelayan proksi IP ialah pelayan perantaraan yang terletak di antara pengguna dan pelayan sasaran Ia bertindak sebagai stesen pemindahan antara pengguna dan pelayan sasaran, memajukan permintaan dan respons pengguna. Dengan menggunakan pelayan proksi IP

Panduan Pembangunan Klien PHP MQTT Panduan Pembangunan Klien PHP MQTT Mar 27, 2024 am 09:21 AM

MQTT (MessageQueuingTelemetryTransport) ialah protokol penghantaran mesej ringan yang biasa digunakan untuk komunikasi antara peranti IoT. PHP ialah bahasa pengaturcaraan sisi pelayan yang biasa digunakan yang boleh digunakan untuk membangunkan klien MQTT. Artikel ini akan memperkenalkan cara menggunakan PHP untuk membangunkan klien MQTT dan memasukkan kandungan berikut: Konsep asas protokol MQTT Pemilihan dan contoh penggunaan perpustakaan klien PHPMQTT: Menggunakan klien PHPMQTT untuk menerbitkan dan

See all articles