>  기사  >  데이터 베이스  >  MySQL이 너무 많은 메모리를 차지하는 문제를 해결하는 방법에 대한 자세한 예

MySQL이 너무 많은 메모리를 차지하는 문제를 해결하는 방법에 대한 자세한 예

WBOY
WBOY앞으로
2022-07-06 14:03:122928검색

이 기사는 mysql에 대한 관련 지식을 제공합니다. 주로 과도한 메모리 사용과 관련된 문제를 해결하기 위해 Windows와 CentOS7이 사용됩니다. 모두에게 도움이 되기를 바랍니다. .

MySQL이 너무 많은 메모리를 차지하는 문제를 해결하는 방법에 대한 자세한 예

추천 학습: mysql 비디오 튜토리얼

머리말

일부 소부르주아 플레이어의 경우 서버 수와 ​​메모리가 매우 제한적인 경우가 많습니다. 예를 들어 제 개인 서버 구성은 2코어 4G5M입니다.

4G 메모리는 실제로 Java 플레이어에게 그다지 크지 않습니다. 몇 가지 미들웨어와 자체 마이크로서비스를 여는 것은 상당히 복잡하며, 그러면 MySQL이 가장 큰 패자입니다. 내 로컬 컴퓨터의 MySQL은 몇 MB의 메모리만 차지합니다(많이 사용하지는 않지만 이 컴퓨터의 MySQL은 실제로 열려 있습니다).

MySQL이 너무 많은 메모리를 차지하는 문제를 해결하는 방법에 대한 자세한 예

서버가 400MB를 차지하므로 실제로 처리량이 없습니다. 혼자 플레이하기에는 메모리 사용량이 정말 너무 많습니다. . .

Solution

설정을 수정하면 MySQL의 메모리 사용량을 줄일 수 있다는 것을 알게 되어서 직접 사용해 보고 기록해봤습니다. 두 대의 서버를 동시에 운영하고 있기 때문에 한 대는 Windows Service 2016으로 설치하고, 다른 한 대는 CentOS7로 설치합니다. 두 서버 모두 상황이 비슷하니 참고하시라고 동시에 두 개의 기록을 만들어 보겠습니다.

구성 파일 찾기

Windows Service 2016

구성 파일의 기본 위치는 C:ProgramDataMySQLMySQL Server 8.0my.ini입니다. 수정 사항이 있는 경우 실제 상황에 따라 찾으세요.

CentOS7

구성 파일의 기본 경로는 /etc/my.cnf입니다. 수정 사항이 있는 경우 실제 상황에 따라 찾아보실 수 있습니다.

구성 파일 수정

윈도우에서는 Ctrl + F, 리눅스에서는 '/key'로 검색하시면 됩니다. 방법을 모르시면 바이두를 참고하시면 됩니다.

찾아 수정해야 할 세 가지가 있습니다.

  1. table_definition_cache를 찾아 400으로 수정했습니다.table_definition_cache,我们修改为400

    官方解释为:可以存储在定义缓存中的表定义数(来自.frm文件)。如果使用大量表,可以创建大型表定义缓存以加快表的打开速度。与普通的表缓存不同,表定义缓存占用更少的空间,并且不使用文件描述符。最小值和默认值均为400。

  2. 找到 table_open_cache,我们修改为256

    MySQL每打开一个表,都会读入一些数据到table_open_cache缓存中,当MySQL在这个缓存中找不到相应信息时,才会去磁盘上读取。

    官方解释为:所有线程的打开表数。增加该值会增加mysqld所需的文件描述符的数量。因此,您必须确保在[mysqld safe]部分的变量“open files limit”中将允许打开的文件量设置为至少4096。

  3. 找到 performance_schema ,修改为off

    如果找不到这个的话,直接在合适的地方加上 performance_schema = off 即可。

    用于监控MySQL server在一个较低级别的运行过程中的资源消耗、资源等待等情况,关闭之后可以节省开销,不会使server的行为发生变化。

修改完之后保存退出。

重启MySQL

Windows Service 2016

以管理员身份启动控制台,输入 net stop mysql,然后再输入 net start mysql。

重启之后还占62M。

MySQL이 너무 많은 메모리를 차지하는 문제를 해결하는 방법에 대한 자세한 예

CentOS7

控制台输入 service mysqld restart 即可重启。

MySQL이 너무 많은 메모리를 차지하는 문제를 해결하는 방법에 대한 자세한 예

如果不行的话,可以试试 /etc/init.d/mysqld restart

공식적인 설명은 다음과 같습니다. 정의 캐시(.frm 파일에서). 많은 수의 테이블을 사용하는 경우 대규모 테이블 정의 캐시를 생성하여 테이블 열기 속도를 높일 수 있습니다. 일반 테이블 캐시와 달리 테이블 정의 캐시는 공간을 덜 차지하며 파일 설명자를 사용하지 않습니다. 최소값과 기본값은 모두 400입니다.

table_open_cache를 찾아 256으로 변경했습니다.MySQL이 너무 많은 메모리를 차지하는 문제를 해결하는 방법에 대한 자세한 예

MySQL이 테이블을 열 때마다 MySQL이 이 캐시에서 해당 정보를 찾을 수 없을 때 table_open_cache 캐시로 일부 데이터를 읽어옵니다. 캐시 언제, 디스크에서 읽혀질 것입니다.

공식적인 설명은 모든 스레드에 대해 열려 있는 테이블 수입니다. 이 값을 늘리면 mysqld에 필요한 파일 설명자 수가 늘어납니다. 따라서 [mysqld safe] 섹션의 "open files Limit" 변수에서 열 수 있는 파일 수가 최소 4096개 이상으로 설정되어 있는지 확인해야 합니다.

🎜performance_schema를 찾아 off로 변경하세요🎜🎜이것을 찾을 수 없다면 적절한 위치에 performance_schema = off를 추가하시면 됩니다. 🎜🎜 하위 수준 작업 중 MySQL 서버의 리소스 소비, 리소스 대기 등을 모니터링하는 데 사용됩니다. 종료 후에는 비용을 절약할 수 있으며 서버 동작이 변경되지 않습니다. 🎜🎜수정 후 저장 후 종료하세요. 🎜🎜🎜MySQL을 다시 시작🎜🎜🎜🎜Windows Service 2016🎜🎜🎜관리자로 콘솔을 시작하고 net stop mysql을 입력한 다음 net start mysql을 입력하세요. 🎜🎜다시 시작한 후에도 여전히 62M을 차지했습니다. 🎜🎜여기에 이미지 설명 삽입🎜🎜🎜CentOS7🎜🎜 🎜 다시 시작하려면 콘솔에 service mysqld restart를 입력하세요. 🎜🎜여기에 이미지 설명 삽입🎜🎜그렇지 않으면 작업이 완료되면 /etc/init.d/mysqld restart 명령을 사용해 볼 수 있습니다. 🎜🎜다시 시작하면 Windows보다 약간 많은 92M을 차지합니다. 🎜🎜🎜🎜🎜Postscript🎜🎜이 방법은 실제로 mysql의 메모리 사용량을 줄일 수 있지만 메모리 대신 성능을 저하시키는 것뿐입니다. 처리량 요구 사항이 상대적으로 높으면 확실히 이런 방식으로 직접 수정할 수 없습니다. 실제 요구 사항에 따라 조정되어야 합니다. 🎜

추천 학습: mysql 비디오 튜토리얼

위 내용은 MySQL이 너무 많은 메모리를 차지하는 문제를 해결하는 방법에 대한 자세한 예의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 csdn.net에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제