데이터 베이스 MySQL 튜토리얼 浅析MySQL内存的使用说明(全局缓存+线程缓存)_MySQL

浅析MySQL内存的使用说明(全局缓存+线程缓存)_MySQL

Jun 01, 2016 pm 01:24 PM
영향

bitsCN.com

首先我们来看一个公式,MySQL中内存分为全局内存和线程内存两大部分(其实并不全部,只是影响比较大的 部分):

per_thread_buffers=(read_buffer_size+read_rnd_buffer_size+sort_buffer_size+thread_stack+join_buffer_size+binlog_cache_size
+tmp_table_size)*max_connections
global_buffers=
innodb_buffer_pool_size+innodb_additional_mem_pool_size+innodb_log_buffer_size+key_buffer_size+query_cache_size
total_memory=global_buffers+per_thread_buffers

全局缓存:
key_buffer_size:
决定索引处理的速度,尤其是索引读的速度。默认值是16M,通过检查状态值Key_read_requests和Key_reads,可以知道key_buffer_size设置是否合理。比例key_reads / key_read_requests应该尽可能的低,至少是1:100,1:1000更好(上述状态值可以使用'key_read%'获得用来显示状态数据)。key_buffer_size只对MyISAM表起作用。即使你不使用MyISAM表,但是内部的临时磁盘表是MyISAM表,也要使用该值。可以使用检查状态值'created_tmp_disk_tables'得知详情。

innodb_buffer_pool_size:InnoDB使用该参数指定大小的内存来缓冲数据和索引,这个是Innodb引擎中影响性能最大的参数。

innodb_additional_mem_pool_size:指定InnoDB用来存储数据字典和其他内部数据结构的内存池大小。缺省值是8M。通常不用太大,只要够用就行,应该与表结构的复杂度有关系。如果不够用,MySQL会在错误日志中写入一条警告信息。

innodb_log_buffer_size:指定InnoDB用来存储日志数据的缓存大小,如果您的表操作中包含大量并发事务(或大规模事务),并且在事务提交前要求记录日志文件,请尽量调高此项值,以提高日志效率。

query_cache_size:是MySQL的查询缓冲大小。(从4.0.1开始,MySQL提供了查询缓冲机制)使用查询缓冲,MySQL将SELECT语句和查询结果存放在缓冲区中,今后对于同样的SELECT语句(区分大小写),将直接从缓冲区中读取结果。根据MySQL用户手册,使用查询缓冲最多可以达到238%的效率。通过检查状态值'Qcache_%',可以知道query_cache_size设置是否合理:如果Qcache_lowmem_prunes的值非常大,则表明经常出现缓冲不够的情况,如果Qcache_hits的值也非常大,则表明查询缓冲使用非常频繁,此时需要增加缓冲大小;如果Qcache_hits的值不大,则表明你的查询重复率很低,这种情况下使用查询缓冲反而会影响效率,那么可以考虑不用查询缓冲。此外,在SELECT语句中加入SQL_NO_CACHE可以明确表示不使用查询缓冲。

线程缓存
每个连接到MySQL服务器的线程都需要有自己的缓冲。大概需要立刻分配256K,甚至在线程空闲时,它们使用默认的线程堆栈,网络缓存等。事务开始之后,则需要增加更多的空间。运行较小的查询可能仅给指定的线程增加少量的内存消耗,然而如果对数据表做复杂的操作例如扫描、排序或者需要临时表,则需分配大约read_buffer_size,sort_buffer_size,read_rnd_buffer_size,tmp_table_size大小的内存空间。不过它们只是在需要的时候才分配,并且在那些操作做完之后就释放了。有的是立刻分配成单独的组块。tmp_table_size 可能高达MySQL所能分配给这个操作的最大内存空间了。

read_buffer_size:是MySQL读入缓冲区大小。对表进行顺序扫描的请求将分配一个读入缓冲区,MySQL会为它分配一段内存缓冲区。read_buffer_size变量控制这一缓冲区的大小。如果对表的顺序扫描请求非常频繁,并且你认为频繁扫描进行得太慢,可以通过增加该变量值以及内存缓冲区大小提高其性能。

sort_buffer_size:是MySQL执行排序使用的缓冲大小。如果想要增加ORDER BY的速度,首先看是否可以让MySQL使用索引而不是额外的排序阶段。如果不能,可以尝试增加sort_buffer_size变量的大小。

read_rnd_buffer_size:是MySQL的随机读缓冲区大小。当按任意顺序读取行时(例如,按照排序顺序),将分配一个随机读缓存区。进行排序查询时,MySQL会首先扫描一遍该缓冲,以避免磁盘搜索,提高查询速度,如果需要排序大量数据,可适当调高该值。但MySQL会为每个客户连接发放该缓冲空间,所以应尽量适当设置该值,以避免内存开销过大。

tmp_table_size:是MySQL的临时表缓冲大小。所有联合在一个DML指令内完成,并且大多数联合甚至可以不用临时表即可以完成。大多数临时表是基于内存的(HEAP)表。具有大的记录长度的临时表 (所有列的长度的和)或包含BLOB列的表存储在硬盘上。如果某个内部heap(堆积)表大小超过tmp_table_size,MySQL可以根据需要自动将内存中的heap表改为基于硬盘的MyISAM表。还可以通过设置tmp_table_size选项来增加临时表的大小。也就是说,如果调高该值,MySQL同时将增加heap表的大小,可达到提高联接查询速度的效果。

thread_stack :主要用来存放每一个线程自身的标识信息,如线程id,线程运行时基本信息等等,我们可以通过 thread_stack 参数来设置为每一个线程栈分配多大的内存。

join_buffer_size:应用程序经常会出现一些两表(或多表)Join的操作需求,MySQL在完成某些 Join 需求的时候(all/index join),为了减少参与Join的“被驱动表”的读取次数以提高性能,需要使用到 Join Buffer 来协助完成 Join操作。当 Join Buffer 太小,MySQL 不会将该 Buffer 存入磁盘文件,而是先将Join Buffer中的结果集与需要 Join 的表进行 Join 操作,然后清空 Join Buffer 中的数据,继续将剩余的结果集写入此 Buffer 中,如此往复。这势必会造成被驱动表需要被多次读取,成倍增加 IO 访问,降低效率。

binlog_cache_size:在事务过程中容纳二进制日志SQL 语句的缓存大小。二进制日志缓存是服务器支持事务存储引擎并且服务器启用了二进制日志(―log-bin 选项)的前提下为每个客户端分配的内存,注意,是每个Client 都可以分配设置大小的binlog cache 空间。如果系统中经常会出现多语句事务的话,可以尝试增加该值的大小,以获得更好的性能。当然,我们可以通过MySQL 的以下两个状态变量来判断当前的binlog_cache_size 的状况:Binlog_cache_use 和Binlog_cache_disk_use。“max_binlog_cache_size”:和"binlog_cache_size"相对应,但是所代表的是binlog 能够使用的最大cache 内存大小。当我们执行多语句事务的时候,max_binlog_cache_size 如果不够大的话,系统可能会报出“ Multi-statement transaction required more than 'max_binlog_cache_size' bytes ofstorage”的错误。
其中需要注意的是:table_cache表示的是所有线程打开的表的数目,和内存无关。

bitsCN.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 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 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
1 몇 달 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
1 몇 달 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
1 몇 달 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 채팅 명령 및 사용 방법
1 몇 달 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

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

SublimeText3 중국어 버전

SublimeText3 중국어 버전

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

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

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

VBOX_E_OBJECT_NOT_FOUND(0x80bb0001)VirtualBox 오류 VBOX_E_OBJECT_NOT_FOUND(0x80bb0001)VirtualBox 오류 Mar 24, 2024 am 09:51 AM

VirtualBox에서 디스크 이미지를 열려고 하면 하드 드라이브를 등록할 수 없다는 오류가 발생할 수 있습니다. 이는 일반적으로 열려고 하는 VM 디스크 이미지 파일이 다른 가상 디스크 이미지 파일과 동일한 UUID를 가질 때 발생합니다. 이 경우 VirtualBox는 오류 코드 VBOX_E_OBJECT_NOT_FOUND(0x80bb0001)를 표시합니다. 이 오류가 발생하더라도 걱정하지 마세요. 시도해 볼 수 있는 몇 가지 해결 방법이 있습니다. 먼저 VirtualBox의 명령줄 도구를 사용하여 디스크 이미지 파일의 UUID를 변경하면 충돌을 피할 수 있습니다. 'VBoxManageinternal' 명령을 실행할 수 있습니다.

비행기 모드를 사용하여 전화를 받는 것이 얼마나 효과적인가요? 비행기 모드를 사용하여 전화를 받는 것이 얼마나 효과적인가요? Feb 20, 2024 am 10:07 AM

비행기 모드로 전화를 걸면 어떻게 될까요? 휴대폰은 사람들의 삶에 없어서는 안될 도구 중 하나가 되었습니다. 휴대폰은 의사소통 도구일 뿐만 아니라 오락, 학습, 업무 및 기타 기능의 집합체이기도 합니다. 휴대폰 기능의 지속적인 업그레이드와 개선으로 인해 사람들은 휴대폰에 대한 의존도가 점점 더 높아지고 있습니다. 비행기 모드의 등장으로 사람들은 비행 중에 휴대폰을 더욱 편리하게 사용할 수 있게 되었습니다. 하지만 비행기 모드에서 다른 사람의 통화가 휴대폰이나 사용자에게 어떤 영향을 미칠지 걱정하시는 분들도 계시죠? 이 글에서는 여러 측면에서 분석하고 논의할 것이다. 첫 번째

TikTok에서 댓글 기능을 끄는 방법은 무엇입니까? TikTok에서 댓글 기능을 끄면 어떻게 되나요? TikTok에서 댓글 기능을 끄는 방법은 무엇입니까? TikTok에서 댓글 기능을 끄면 어떻게 되나요? Mar 23, 2024 pm 06:20 PM

Douyin 플랫폼에서 사용자는 인생의 순간을 공유할 수 있을 뿐만 아니라 다른 사용자와 상호 작용할 수도 있습니다. 때로는 댓글 기능이 온라인 폭력, 악성 댓글 등 불쾌한 경험을 유발할 수 있습니다. 그렇다면 TikTok의 댓글 기능을 끄는 방법은 무엇입니까? 1. Douyin의 댓글 기능을 끄는 방법은 무엇입니까? 1. Douyin APP에 로그인하고 개인 홈페이지에 들어가세요. 2. 오른쪽 하단의 "I"를 클릭하여 설정 메뉴로 들어갑니다. 3. 설정 메뉴에서 "개인정보 설정"을 찾으세요. 4. "개인정보 설정"을 클릭하여 개인정보 설정 인터페이스로 들어갑니다. 5. 개인정보 설정 인터페이스에서 "댓글 설정"을 찾으세요. 6. "댓글 설정"을 클릭하여 댓글 설정 인터페이스로 들어갑니다. 7. 댓글 설정 인터페이스에서 '댓글 닫기' 옵션을 찾으세요. 8. "댓글 닫기" 옵션을 클릭하여 댓글 닫기를 확인하세요.

Java의 파일 포함 취약점과 그 영향 Java의 파일 포함 취약점과 그 영향 Aug 08, 2023 am 10:30 AM

Java는 다양한 애플리케이션을 개발하는 데 일반적으로 사용되는 프로그래밍 언어입니다. 그러나 다른 프로그래밍 언어와 마찬가지로 Java에도 보안 취약점과 위험이 있습니다. 일반적인 취약점 중 하나는 파일 포함 취약점(FileInclusionVulnerability)입니다. 이 문서에서는 이 취약점의 원리, 영향 및 방지 방법을 살펴봅니다. 파일 인클루젼 취약점은 프로그램 내에서 다른 파일을 동적으로 도입하거나 포함시키지만, 도입된 파일이 완전히 검증 및 보호되지 않는 취약점을 말합니다.

데이터 부족이 모델 학습에 미치는 영향 데이터 부족이 모델 학습에 미치는 영향 Oct 08, 2023 pm 06:17 PM

데이터 부족이 모델 학습에 미치는 영향에는 특정 코드 예제가 필요합니다. 기계 학습 및 인공 지능 분야에서 데이터는 모델 학습의 핵심 요소 중 하나입니다. 그러나 현실에서 우리가 자주 직면하는 문제는 데이터의 부족입니다. 데이터 희소성은 훈련 데이터의 양이 부족하거나 주석이 달린 데이터가 부족한 것을 의미합니다. 이 경우 모델 훈련에 일정한 영향을 미칩니다. 데이터 부족 문제는 주로 다음과 같은 측면에서 나타납니다. 과적합(Overfitting): 훈련 데이터의 양이 부족하면 모델이 과적합되기 쉽습니다. 과적합은 모델이 훈련 데이터에 과도하게 적응하는 것을 말합니다.

하드 드라이브의 불량 섹터로 인해 어떤 문제가 발생합니까? 하드 드라이브의 불량 섹터로 인해 어떤 문제가 발생합니까? Feb 18, 2024 am 10:07 AM

하드디스크의 배드섹터(Bad Sector)란 하드디스크의 물리적인 고장, 즉 하드디스크의 저장장치가 정상적으로 데이터를 읽거나 쓸 수 없는 상태를 의미합니다. 불량 섹터가 하드 드라이브에 미치는 영향은 매우 크며 데이터 손실, 시스템 충돌 및 하드 드라이브 성능 저하로 이어질 수 있습니다. 이 기사에서는 하드 드라이브 불량 섹터의 영향과 관련 솔루션을 자세히 소개합니다. 첫째, 하드 드라이브의 불량 섹터로 인해 데이터가 손실될 수 있습니다. 하드 디스크의 섹터에 불량 섹터가 있으면 해당 섹터의 데이터를 읽을 수 없어 파일이 손상되거나 액세스할 수 없게 됩니다. 불량 섹터가 위치한 섹터에 중요한 파일이 저장되어 있는 경우 이러한 상황은 특히 심각합니다.

광산 카드가 게임에 구체적으로 어떤 영향을 미치나요? 광산 카드가 게임에 구체적으로 어떤 영향을 미치나요? Jan 03, 2024 am 09:05 AM

일부 사용자는 저렴함을 위해 마이닝 카드 구매를 고려할 수도 있습니다. 그러나 일부 게이머는 마이닝 카드가 게임 플레이에 미치는 영향을 걱정합니다. . 마이닝 카드를 사용하여 게임을 할 때의 효과는 무엇입니까? 1. 마이닝 카드의 수명이 매우 짧고 그냥 플레이한 후에는 쓸모가 없게 될 가능성이 높기 때문에 마이닝 카드를 사용한 게임 플레이의 안정성은 보장할 수 없습니다. 2. 마이닝 카드는 기본적으로 원본 버전의 거세 버전이므로 장기간 마모로 인해 모든 측면에서 성능이 약할 수 있습니다. 3. 이와 같은 방법으로 이용자는 게임 플레이 시 게임의 효과를 모두 표현하지 못할 수도 있습니다. 4. 게다가 그래픽 카드의 전자 부품은 미리 노후화되며, 게임을 하는 것도 그래픽 카드를 소모하기 때문에 소모되는 정도가 크기 때문에 게임에 미치는 영향이 큽니다. 5. 일반적으로 게임을 할 때는 마이닝 카드를 사용합니다.

낮은 그래픽 카드 구성은 어떤 영향을 미치나요? 낮은 그래픽 카드 구성은 어떤 영향을 미치나요? Feb 15, 2024 pm 03:27 PM

컴퓨터의 실행 품질은 기본적으로 그래픽 카드에 큰 영향을 미칩니다. 일부 사용자는 그래픽 카드에 대해 잘 모르고 그래픽 카드가 컴퓨터의 어떤 측면에 영향을 미치는지 정확히 알지 못합니다. 낮은 그래픽 카드 구성에 따른 몇 가지 효과를 소개하겠습니다. 낮은 그래픽 카드 구성의 영향은 무엇입니까? 답변: 1. 일부 대규모 3D 게임은 실행할 수 없습니다. 2. 일부 고화질 비디오를 재생할 때 컴퓨터는 큰 압박을 받게 됩니다. 3. 좀 더 전문적인 소프트웨어의 경우 도면 및 3D 모델 렌더링이 필요할 때 제대로 실행할 방법이 없습니다. 4. 그래픽 카드 구성이 낮으면 게임을 열 수 없거나 자주 충돌하고 정지되며 컴퓨터 화면도 흐려지거나 블루 스크린이 나타납니다. 5. 게임에서 가장 중요한 것은 그래픽 카드입니다. 많은 사진이 필요하기 때문입니다.

See all articles