TableCache设置过小造成MyISAM频繁损坏_MySQL
转自老王的博客
前些天说了一下如何修复损坏的MyISAM表,可惜只会修复并不能脱离被动的境地,只有查明了故障原因才会一劳永逸。
如果数据库服务非正常关闭(比如说进程被杀,服务器断电等等),并且此时恰好正在更新MyISAM表,那么发生损坏的概率就比较大。今天我要说的是另一种情况:频繁的打开关闭MyISAM表文件造成MyISAM表损坏。
什么时候会出现频繁的打开关闭MyISAM表文件的情况呢?
先查看当前系统的table_cache设置,它的作用就是缓存表文件描述符,降低打开关闭表的频率,如果这个参数设置得过小,那么很快就会被占满,再有新请求过来的时候,就不得不关闭一些已打开的表以便为新请求腾出空间,从而出现频繁的打开关闭MyISAM表文件的情况:
mysql> show variables like 'table%';
再查看当前系统的打开表的情况:
mysql> show status like 'open%';
有两项关键的结果:Open_tables和Opened_tables,他们的名字类似,其含义的区别在于:
Open_tables:表示当前打开的表数目。
Opened_tables:表示累计已经打开的表数目。
那么如何判断table_cache是否设置合理呢?其判断尺度如下:
如果Opened_tables远大于Open_tables,并且Open_tables很接近table_cache,那么就说明table_cache偏小。
还要注意设置操作系统的参数,因为即便你把table_cache设置得很大,一旦超过了操作系统的限制也没用,可以按如下方法查询当前值:
ulimit -n
设置方法也很简单,比如设置成8k,可以这样:
vi /etc/security/limits.conf
* hard nofile 8192
* soft nofile 8192
这样设定比在/etc/rc.local里设定ulimit -n 8192更合理一些(参考链接)。
MySQL运行稳定后,查看open_files_limit参数:
mysql> show variables like '%open%';
在大量使用MyISAM的环境里,应该保证open_files_limit表类型至少是table_cache的二到三倍,这是因为每个MyISAM表都包括三个文件:一个表定义文件,一个表索引文件,一个表数据文件,详细介绍可以参考文档。而在Innodb的环境里,一个表只有一个文件,明白这些基本知识对解决问题很有帮助。
具体的数据库文件打开情况可以用lsof来查看:
lsof | grep MYI 或者 lsof | grep MYD
可以发现索引文件描述符是客户端共享的,数据文件则不是,你可以这样确认这一点:
lsof | egrep -i 'myd|myi' | awk '{++state[$NF]} END {for(key in state) print state[key], "/t", key}' | sort -nr
为了保险点,或许还要查查内核的相关参数,比如fs.file-max,这些细节往往会影响到MySQL:
sysctl -a | grep "file"
注意到以上这些因素,问题差不多就能解决了。不过还要注意一点,table cache不是越大越好:
http://www.freshbooks.com/blog/2008/09/09/now-were-flying/
http://www.mysqlperformanceblog.com/2009/11/16/table_cache-negative-scalability/
http://www.mysqlperformanceblog.com/2009/11/26/more-on-table_cache/
BTW:如果你比较懒惰,也可以用MySQL Performance Tuning Primer Script来判断参数是否合理

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



Apabila log masuk ke iTunesStore menggunakan AppleID, ralat ini mengatakan "AppleID ini belum digunakan dalam iTunesStore" mungkin dilemparkan pada skrin. Tiada mesej ralat yang perlu dibimbangkan, anda boleh membetulkannya dengan mengikuti set penyelesaian ini. Betulkan 1 – Tukar Alamat Penghantaran Sebab utama gesaan ini muncul di iTunes Store ialah anda tidak mempunyai alamat yang betul dalam profil AppleID anda. Langkah 1 – Pertama, buka Tetapan iPhone pada iPhone anda. Langkah 2 – AppleID harus berada di atas semua tetapan lain. Jadi, bukalah. Langkah 3 – Setelah sampai, buka pilihan “Pembayaran & Penghantaran”. Langkah 4 – Sahkan akses anda menggunakan Face ID. langkah

Jadi, anda mengambil beberapa foto yang hebat pada pesta terakhir anda, tetapi malangnya, kebanyakan foto yang anda ambil adalah mata merah. Foto itu sendiri bagus, tetapi mata merah di dalamnya merosakkan imej. Apatah lagi, beberapa foto parti itu mungkin daripada telefon rakan anda. Hari ini kita akan melihat bagaimana untuk membuang mata merah daripada foto. Apakah yang menyebabkan mata merah dalam foto? Mata merah sering berlaku apabila mengambil foto dengan denyar. Ini kerana cahaya dari denyar memancar terus ke bahagian belakang mata, menyebabkan saluran darah di bawah mata memantulkan cahaya, memberikan kesan mata merah dalam foto. Nasib baik, dengan kemajuan teknologi yang berterusan, beberapa kamera kini dilengkapi dengan fungsi pembetulan mata merah yang boleh menyelesaikan masalah ini dengan berkesan. Dengan menggunakan ciri ini, kamera mengambil gambar

Apabila pengguna Win11 menggunakan bukti kelayakan untuk log masuk, dia menerima mesej ralat yang menyatakan bahawa kelayakan anda tidak boleh disahkan Apa yang sedang berlaku? Selepas editor menyiasat masalah ini, saya mendapati bahawa mungkin terdapat beberapa situasi berbeza yang secara langsung atau tidak langsung menyebabkan masalah ini.

Panduan Komprehensif untuk Ralat PHP 500: Punca, Diagnosis dan Pembetulan Semasa pembangunan PHP, kami sering menghadapi ralat dengan kod status HTTP 500. Ralat ini biasanya dipanggil "500InternalServerError", yang bermaksud bahawa beberapa ralat yang tidak diketahui berlaku semasa memproses permintaan di bahagian pelayan. Dalam artikel ini, kami akan meneroka punca biasa ralat PHP500, cara mendiagnosisnya dan cara membetulkannya serta memberikan contoh kod khusus untuk rujukan. Punca biasa 1.500 ralat 1.

Ramai rakan sentiasa menghadapi skrin biru apabila menggunakan sistem pengendalian komputer malah sistem win11 yang terkini tidak dapat lari daripada nasib skrin biru Oleh itu, hari ini saya telah membawakan anda tutorial bagaimana untuk membaiki skrin biru win11. Tidak kira sama ada anda telah menemui skrin biru atau tidak, anda boleh mempelajarinya terlebih dahulu sekiranya anda memerlukannya. Cara membetulkan kaedah skrin biru win11 1. Jika kita menemui skrin biru, mulakan semula sistem dan semak sama ada ia boleh dimulakan seperti biasa. 2. Jika ia boleh bermula seperti biasa, klik kanan "Komputer" pada desktop dan pilih "Urus" 3. Kemudian kembangkan "Alat Sistem" di sebelah kiri tetingkap pop timbul dan pilih "Event Viewer" 4. Dalam pemapar acara, kami akan Anda boleh melihat masalah khusus yang menyebabkan skrin biru. 5. Kemudian ikut sahaja situasi dan acara skrin biru

1. Tekan win+r untuk membuka tetingkap jalankan, masukkan [regedit] dan tekan Enter untuk membuka editor pendaftaran. 2. Dalam editor pendaftaran yang dibuka, klik untuk mengembangkan [HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRun]. Dalam ruang kosong di sebelah kanan, klik kanan dan pilih [New - String Value], dan namakan semula kepada [systray.exe]. 3. Klik dua kali untuk membuka systray.exe, ubah suai data berangkanya kepada [C:WindowsSystem32systray.exe], dan klik [OK] untuk menyimpan tetapan.

Tajuk: Table'table_name'ismarkedcrashedandshouldberepaired-Cara menyelesaikan ralat MySQL: Jadual ditandakan sebagai ranap dan perlu dibaiki Contoh kod khusus diperlukan dan Aplikasi sedang dibangunkan. Namun, atas pelbagai sebab, kadangkala kita mungkin menghadapi beberapa ralat dan masalah. dalam

Mod pesawat sangat mudah dalam beberapa situasi. Walau bagaimanapun, mod kapal terbang yang sama boleh menyebabkan anda sakit kepala jika iPhone anda tiba-tiba tersekat padanya. Dalam artikel ini, kami telah mereka set penyelesaian ini untuk mengeluarkan iPhone anda daripada mod kapal terbang. Pembetulan pantas – 1. Cuba lumpuhkan Mod Pesawat terus dari Pusat Kawalan. 2. Jika anda tidak dapat melumpuhkan Mod Pesawat dari Pusat Kawalan, anda boleh melumpuhkan Mod Pesawat terus dari tab Tetapan - Jika petua ini tidak berkesan, ikut pembetulan di bawah untuk menyelesaikan isu tersebut. Betulkan 1 – Paksa Mulakan Semula Peranti Anda Proses menghidupkan semula peranti anda secara paksa adalah sangat mudah. Apa yang anda perlu lakukan ialah ikuti arahan langkah demi langkah ini. Langkah 1 – Anda boleh memulakan proses dengan menekan dan melepaskan butang Kelantangan Naik. langkah
