데이터 베이스 MySQL 튜토리얼 TableCache设置过小造成MyISAM频繁损坏_MySQL

TableCache设置过小造成MyISAM频繁损坏_MySQL

Jun 01, 2016 pm 01:51 PM
수리하다 어떻게 数据库服务

转自老王的博客

前些天说了一下如何修复损坏的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来判断参数是否合理

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

Video Face Swap

Video Face Swap

완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

이 Apple ID는 iTunes Store에서 아직 사용되지 않습니다. 수정 이 Apple ID는 iTunes Store에서 아직 사용되지 않습니다. 수정 Jun 10, 2024 pm 05:42 PM

AppleID를 사용하여 iTunesStore에 로그인하면 "이 AppleID는 iTunesStore에서 사용되지 않았습니다"라는 오류가 화면에 표시될 수 있습니다. 걱정할 오류 메시지는 없습니다. 다음 솔루션 세트에 따라 문제를 해결할 수 있습니다. 수정 1 – 배송 주소 변경 iTunes Store에 이 메시지가 나타나는 주된 이유는 AppleID 프로필에 올바른 주소가 없기 때문입니다. 1단계 – 먼저 iPhone에서 iPhone 설정을 엽니다. 2단계 – AppleID는 다른 모든 설정보다 우선해야 합니다. 그러니 열어보세요. 3단계 – 거기에서 “결제 및 배송” 옵션을 엽니다. 4단계 – Face ID를 사용하여 액세스 권한을 확인하세요. 단계

iPhone에서 적목 현상을 수정하는 방법 iPhone에서 적목 현상을 수정하는 방법 Feb 23, 2024 pm 04:31 PM

그래서 지난 파티에서 멋진 사진을 많이 찍으셨는데 아쉽게도 찍은 사진이 대부분 빨간 눈이었어요. 사진 자체는 훌륭하지만, 사진 속의 빨간 눈이 이미지를 망치네요. 말할 것도 없이, 파티 사진 중 일부는 친구의 휴대폰에서 찍은 것일 수도 있습니다. 오늘은 사진에서 적목 현상을 제거하는 방법을 살펴보겠습니다. 사진에서 눈이 빨간 이유는 무엇입니까? 플래시를 사용하여 사진을 촬영할 때 적목 현상이 자주 발생합니다. 이는 플래시에서 나오는 빛이 눈 뒤쪽으로 직접적으로 비치면서 눈 밑 혈관에 빛이 반사되어 사진에 눈이 충혈되는 효과를 주기 때문입니다. 다행스럽게도 기술이 지속적으로 발전함에 따라 일부 카메라에는 이러한 문제를 효과적으로 해결할 수 있는 적목 보정 기능이 탑재되었습니다. 이 기능을 사용하면 카메라가 사진을 찍습니다.

Win11에서 자격 증명을 확인하지 못하는 문제를 해결하는 방법은 무엇입니까? Win11에서 자격 증명을 확인하지 못하는 문제를 해결하는 방법은 무엇입니까? Jan 30, 2024 pm 02:03 PM

Win11 사용자가 자격 증명을 사용하여 로그인하면 자격 증명을 확인할 수 없다는 오류 메시지가 표시됩니다. 무슨 일입니까? 편집자가 이 문제를 조사한 후 이 문제를 직간접적으로 발생시키는 여러 가지 상황이 있을 수 있다는 사실을 발견했습니다.

PHP 500 오류에 대한 종합 안내서: 원인, 진단 및 수정 사항 PHP 500 오류에 대한 종합 안내서: 원인, 진단 및 수정 사항 Mar 22, 2024 pm 12:45 PM

PHP 500 오류에 대한 종합 가이드: 원인, 진단 및 수정 사항 PHP 개발 중에 HTTP 상태 코드 500과 관련된 오류가 자주 발생합니다. 이 오류는 일반적으로 "500InternalServerError"라고 불리며, 이는 서버 측에서 요청을 처리하는 동안 알 수 없는 오류가 발생했음을 의미합니다. 이 기사에서는 PHP500 오류의 일반적인 원인, 진단 방법, 수정 방법을 살펴보고 참조할 수 있는 구체적인 코드 예제를 제공합니다. 1.500 오류의 일반적인 원인 1.

Windows 11 블루 스크린 문제 해결을 위한 쉬운 가이드 Windows 11 블루 스크린 문제 해결을 위한 쉬운 가이드 Dec 27, 2023 pm 02:26 PM

많은 친구들이 컴퓨터 운영 체제를 사용할 때 항상 블루 스크린을 경험합니다. 최신 win11 시스템도 블루 스크린의 운명을 피할 수 없습니다. 따라서 오늘은 win11 블루 스크린을 복구하는 방법에 대한 튜토리얼을 가져왔습니다. 블루 스크린이 발생했는지 여부에 관계없이 필요할 경우 먼저 배울 수 있습니다. win11 블루스크린 해결방법 1. 블루스크린이 발생하면 먼저 시스템을 다시 시작하여 정상적으로 시작되는지 확인하세요. 2. 정상적으로 시작할 수 있으면 바탕화면의 "컴퓨터"를 마우스 오른쪽 버튼으로 클릭하고 "관리"를 선택합니다. 3. 팝업창 왼쪽의 "시스템 도구"를 확장한 후 "이벤트 뷰어"를 선택합니다. 4. 창에서 이벤트 뷰어를 통해 블루스크린이 발생한 구체적인 문제가 무엇인지 확인할 수 있습니다. 5. 그런 다음 블루 스크린 상황과 이벤트를 따르십시오.

WIN10에서 볼륨을 조정할 수 없는 문제를 해결하는 방법 WIN10에서 볼륨을 조정할 수 없는 문제를 해결하는 방법 Mar 27, 2024 pm 05:16 PM

1. win+r을 눌러 실행창을 열고 [regedit]를 입력한 후 Enter를 눌러 레지스트리 편집기를 엽니다. 2. 열린 레지스트리 편집기에서 [HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRun]을 클릭하여 확장합니다. 오른쪽 빈 공간에서 마우스 오른쪽 버튼을 클릭한 후 [새로 만들기 - 문자열 값]을 선택하고 이름을 [systray.exe]로 변경합니다. 3. systray.exe를 두 번 클릭하여 열고 수치 데이터를 [C:WindowsSystem32systray.exe]로 수정한 후 [확인]을 클릭하여 설정을 저장합니다.

테이블 'table_name'은 충돌된 것으로 표시되어 복구해야 합니다. - MySQL 오류 해결 방법: 테이블이 충돌된 것으로 표시되어 복구해야 합니다. 테이블 'table_name'은 충돌된 것으로 표시되어 복구해야 합니다. - MySQL 오류 해결 방법: 테이블이 충돌된 것으로 표시되어 복구해야 합니다. Oct 05, 2023 am 09:25 AM

제목: Table'table_name' is markedascrashedandshouldberepaired - MySQL 오류 해결 방법: 테이블이 충돌한 것으로 표시되어 복구해야 합니다. 기사 텍스트: MySQL은 다양한 웹사이트에서 널리 사용되는 강력한 관계형 데이터베이스 관리 시스템입니다. 애플리케이션이 개발 중입니다. 그러나 여러 가지 이유로 인해 때때로 오류나 문제가 발생할 수 있습니다. ~에

iPhone이 비행기 모드에서 멈춤: 해결 방법 iPhone이 비행기 모드에서 멈춤: 해결 방법 Jun 15, 2024 pm 02:16 PM

비행기 모드는 어떤 상황에서는 매우 편리합니다. 그러나 동일한 비행기 모드로 인해 iPhone이 갑자기 멈추면 두통이 생길 수 있습니다. 이 기사에서는 iPhone을 비행기 모드에서 해제하는 솔루션 세트를 설계했습니다. 빠른 수정 - 1. 제어 센터에서 직접 비행기 모드를 비활성화해 보세요. 2. 제어 센터에서 비행기 모드를 비활성화할 수 없는 경우 설정 탭에서 직접 비행기 모드를 비활성화할 수 있습니다. 이러한 팁이 작동하지 않으면 아래 수정 사항에 따라 문제를 해결하십시오. 수정 1 – 장치를 강제로 다시 시작 장치를 강제로 다시 시작하는 과정은 매우 간단합니다. 당신이 해야 할 일은 다음의 단계별 지침을 따르는 것 뿐입니다. 1단계 – 볼륨 크게 버튼을 눌렀다 놓아 프로세스를 시작할 수 있습니다. 단계

See all articles