详细介绍MySQL缓存分类和配置
MySQL缓存分类
InnoDB缓冲池
InnoDB日志文件和MyIsAM数据的操作系统缓存
MyIsAM键缓存
查询缓存
无法手工配置的缓存,二进制日志,表定义文件的操作系统缓存
其它缓存,通常不需要太多内存
InnoDB缓冲池
作用:
1.缓存的对象包括:数据行,索引,插入缓冲,锁,以及内部数据结构。
2.利用缓冲池来版主延迟写入,可以合并多次写入,顺序写会(存储设备)
相关参数:
查询InnoDB缓冲池的大小,单位是字节
show variables like 'innodb_buffer_pool_size';
innodb_max_dirty_pages_pct变量影响脏页的数量,
查看innodb_max_dirty_pages_pct的设置
show variables like 'innodb_max_dirty_pages_pct'
当脏页超过innodb_max_dirty_pages_pct指定的百分比之后,后台线程启动(快速刷写模式)将脏页刷写入磁盘
MySQL内存不足时,有一个类似于sqlserver的lazywrite的后台线程定时将脏页刷新入磁盘,
并且清理脏页占用的内存空间,给其他数据(需要载入内存的数据)使用。
当事务日志没有空间的时候,InnoDB将进入激烈刷写模式,大日志可以提升性能的原因(?)
预热缓冲区:
可以理解成数据库启动的时候将数据从磁盘加载到缓存区中,以提升数据的访问性能
两种预热缓冲区的方法
1.Percina Server
2.Init_file设置,也即启动后指定Init_file里面的sql,将sql语句中指定的数据写入缓冲区
MyisAM键缓存(key caches)
作用:
MyisAM键缓存又称键缓冲,MyisAM表只缓存索引不缓存数据,MyisAM键缓存就是缓存的索引
相关参数:
默认只有一个MyisAM键缓存(池)
配置选项key_buffer_size
设置key_buffer_size时参考索引的大小,key_buffer_size的值没必要设置的比索引更大
或者不超过操作系统缓存保留总内存的25%-50%
设置时参考索引字段的大小:select sum(index_length) from information_schema.`TABLES`
mysql默认回将所有索引都换粗在默认键缓存中,
每个MyisAM键缓存(池)有指定的大小,可以建多个key_buffer_size来缓存索引
配置方法,在配置文件中加入
key_buffer_1.key_buffer_size = 1G
key_buffer_2.key_buffer_size = 1G
加上默认的一个,一共有三个key_buffer_size
指定索引到键缓存:
缓存表的索引到指定缓冲区:cache index t1,t2 in key_buffer_1
或者在init_file中配置
LODA INDEX INTO CACHE t1,t2(被分配在默认缓冲区)
键缓存使用率计算:
100-((key_buffer_unused*key_cache_block_size)*100/key_buffer_size)
其它:
1.MyisAM使用操作系统内存来缓存数据,数据往往比索引要大,因此要预留更多的内存给操作系统缓存,而不是键缓存
2.即使没有使用MyisAM表,依旧要设置key_buffer_size为一个较小的值(比如32M),mysql服务器可能在内部使用MyisAM表
线程缓存
作用:
当连接关闭后,释放的线程被缓存起来,处于备用状态,
当有新的连接创建时,可以直接使用缓存中缓存的线程,以提高连接请求的效率
不用为每个连接创建新的线程
消费方式:
新进来的连接从缓存中占用一个处于缓存状态的线程(被占用后从缓存中删除),
当连接关闭后,如果线程缓存还有空间的话,将当前线程归还到缓存线程中,如果缓存线程没有空间,则销毁这个线程
相关参数:
thread_cache_size指定了缓存中可保存的线程的个数
每个线程占用的内存空间为256kb左右,
除非有非常高的并发访问,否则不应该,一般不需要配置这个值
单位是缓存的线程的个数
show variables like 'thread_cache_size'
每个线程占用的内存空间为256kb左右,
表缓存
作用:
主要是跟MyisAM表有关,缓存的是表的.frm解析结果和一些其他数据,
缓存之后就提高访问表的效率。对于MyIsAM表,表缓存之后可以避免修改MyisAM头文件来标记表正在被使用
show variables like '%table_open_cache%';
InnoDB 数据字典表
作用:
缓存InnoDB的表定义信息,
每当打开一张InnoDB表的时候,就会缓存这个表的定义到数据字典,但是表关闭后并不会从缓存中移除
Atas ialah kandungan terperinci 详细介绍MySQL缓存分类和配置. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



Sebab utama mengapa anda tidak boleh log masuk ke MySQL sebagai akar adalah masalah kebenaran, ralat fail konfigurasi, kata laluan tidak konsisten, masalah fail soket, atau pemintasan firewall. Penyelesaiannya termasuk: periksa sama ada parameter pengikat di dalam fail konfigurasi dikonfigurasi dengan betul. Semak sama ada kebenaran pengguna root telah diubahsuai atau dipadam dan ditetapkan semula. Sahkan bahawa kata laluan adalah tepat, termasuk kes dan aksara khas. Semak tetapan dan laluan kebenaran fail soket. Semak bahawa firewall menyekat sambungan ke pelayan MySQL.

Apabila MySQL mengubahsuai struktur jadual, kunci metadata biasanya digunakan, yang boleh menyebabkan jadual dikunci. Untuk mengurangkan kesan kunci, langkah -langkah berikut boleh diambil: 1. Simpan jadual yang tersedia dengan DDL dalam talian; 2. Melakukan pengubahsuaian kompleks dalam kelompok; 3. Beroperasi semasa tempoh kecil atau luar puncak; 4. Gunakan alat PT-OSC untuk mencapai kawalan yang lebih baik.

1. Gunakan indeks yang betul untuk mempercepatkan pengambilan data dengan mengurangkan jumlah data yang diimbas memilih*frommployeesWherElast_name = 'Smith'; Jika anda melihat lajur jadual beberapa kali, buat indeks untuk lajur tersebut. Jika anda atau aplikasi anda memerlukan data dari pelbagai lajur mengikut kriteria, buat indeks komposit 2. Elakkan pilih * Hanya lajur yang diperlukan, jika anda memilih semua lajur yang tidak diingini, ini hanya akan memakan lebih banyak pelayan dan menyebabkan pelayan melambatkan pada masa yang tinggi atau kekerapan misalnya, jadual anda

Dalam pangkalan data MySQL, hubungan antara pengguna dan pangkalan data ditakrifkan oleh kebenaran dan jadual. Pengguna mempunyai nama pengguna dan kata laluan untuk mengakses pangkalan data. Kebenaran diberikan melalui perintah geran, sementara jadual dibuat oleh perintah membuat jadual. Untuk mewujudkan hubungan antara pengguna dan pangkalan data, anda perlu membuat pangkalan data, membuat pengguna, dan kemudian memberikan kebenaran.

MySQL mempunyai versi komuniti percuma dan versi perusahaan berbayar. Versi komuniti boleh digunakan dan diubahsuai secara percuma, tetapi sokongannya terhad dan sesuai untuk aplikasi dengan keperluan kestabilan yang rendah dan keupayaan teknikal yang kuat. Edisi Enterprise menyediakan sokongan komersil yang komprehensif untuk aplikasi yang memerlukan pangkalan data yang stabil, boleh dipercayai, berprestasi tinggi dan bersedia membayar sokongan. Faktor yang dipertimbangkan apabila memilih versi termasuk kritikal aplikasi, belanjawan, dan kemahiran teknikal. Tidak ada pilihan yang sempurna, hanya pilihan yang paling sesuai, dan anda perlu memilih dengan teliti mengikut keadaan tertentu.

Penyederhanaan Integrasi Data: AmazonRDSMYSQL dan Integrasi Data Integrasi Zero ETL Redshift adalah di tengah-tengah organisasi yang didorong oleh data. Proses tradisional ETL (ekstrak, menukar, beban) adalah kompleks dan memakan masa, terutamanya apabila mengintegrasikan pangkalan data (seperti Amazonrdsmysql) dengan gudang data (seperti redshift). Walau bagaimanapun, AWS menyediakan penyelesaian integrasi ETL sifar yang telah mengubah keadaan ini sepenuhnya, menyediakan penyelesaian yang mudah, hampir-sebenar untuk penghijrahan data dari RDSMYSQL ke redshift. Artikel ini akan menyelam ke integrasi RDSMYSQL Zero ETL dengan redshift, menjelaskan bagaimana ia berfungsi dan kelebihan yang dibawa kepada jurutera dan pemaju data.

MySQL tidak boleh berjalan secara langsung di Android, tetapi ia boleh dilaksanakan secara tidak langsung dengan menggunakan kaedah berikut: menggunakan pangkalan data ringan SQLite, yang dibina di atas sistem Android, tidak memerlukan pelayan yang berasingan, dan mempunyai penggunaan sumber kecil, yang sangat sesuai untuk aplikasi peranti mudah alih. Sambungkan jauh ke pelayan MySQL dan sambungkan ke pangkalan data MySQL pada pelayan jauh melalui rangkaian untuk membaca dan menulis data, tetapi terdapat kelemahan seperti kebergantungan rangkaian yang kuat, isu keselamatan dan kos pelayan.

Panduan Pengoptimuman Prestasi Pangkalan Data MySQL Dalam aplikasi yang berintensifkan sumber, pangkalan data MySQL memainkan peranan penting dan bertanggungjawab untuk menguruskan urus niaga besar-besaran. Walau bagaimanapun, apabila skala aplikasi berkembang, kemunculan prestasi pangkalan data sering menjadi kekangan. Artikel ini akan meneroka satu siri strategi pengoptimuman prestasi MySQL yang berkesan untuk memastikan aplikasi anda tetap cekap dan responsif di bawah beban tinggi. Kami akan menggabungkan kes-kes sebenar untuk menerangkan teknologi utama yang mendalam seperti pengindeksan, pengoptimuman pertanyaan, reka bentuk pangkalan data dan caching. 1. Reka bentuk seni bina pangkalan data dan seni bina pangkalan data yang dioptimumkan adalah asas pengoptimuman prestasi MySQL. Berikut adalah beberapa prinsip teras: Memilih jenis data yang betul dan memilih jenis data terkecil yang memenuhi keperluan bukan sahaja dapat menjimatkan ruang penyimpanan, tetapi juga meningkatkan kelajuan pemprosesan data.
