ホームページ データベース 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ヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

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 にもセキュリティ上の脆弱性とリスクがあります。一般的な脆弱性の 1 つは、ファイル インクルードの脆弱性 (FileInclusionVulnerability) です。この記事では、この脆弱性の原理、影響、および防止方法について説明します。ファイルインクルードの脆弱性とは、プログラム内に他のファイルが動的に導入または組み込まれることを指しますが、導入されたファイルは完全に検証および保護されていないため、

データ不足がモデルトレーニングに及ぼす影響 データ不足がモデルトレーニングに及ぼす影響 Oct 08, 2023 pm 06:17 PM

データ不足がモデル トレーニングに与える影響には、特定のコード サンプルが必要です。機械学習と人工知能の分野では、データはモデルをトレーニングするための中核要素の 1 つです。しかし、実際に私たちがよく直面する問題はデータ不足です。データ不足とは、トレーニング データの量が不足していること、またはアノテーション付きデータが不足していることを指し、この場合、モデルのトレーニングに一定の影響を及ぼします。データ不足の問題は、主に次の側面に反映されます。 過学習: トレーニング データの量が不十分な場合、モデルは過学習する傾向があります。過学習とは、モデルがトレーニング データに過剰に適応することを指します。

ハードドライブ上の不良セクタはどのような問題を引き起こしますか? ハードドライブ上の不良セクタはどのような問題を引き起こしますか? Feb 18, 2024 am 10:07 AM

ハードディスク上の不良セクタとは、ハードディスクの物理的な障害、つまりハードディスク上の記憶装置がデータを正常に読み書きできないことを指します。ハードドライブ上の不良セクタの影響は非常に大きく、データ損失、システムクラッシュ、ハードドライブパフォーマンスの低下につながる可能性があります。この記事では、ハードドライブの不良セクタの影響と関連する解決策について詳しく紹介します。まず、ハードドライブ上の不良セクタはデータ損失につながる可能性があります。ハードディスクのセクタに不良セクタがあると、そのセクタ上のデータを読み取ることができなくなり、ファイルが破損したりアクセスできなくなったりします。この状況は、不良セクタが存在するセクタに重要なファイルが保存されている場合に特に深刻です。

地雷カードはゲームに具体的にどのような影響を与えますか? 地雷カードはゲームに具体的にどのような影響を与えますか? 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