ホームページ データベース mysql チュートリアル Mysqlデータベースの最適化方法のまとめ(必読)

Mysqlデータベースの最適化方法のまとめ(必読)

Aug 18, 2018 pm 05:52 PM
mysql 最適化

この記事は、Mysql データベースの最適化方法をまとめたものです。必要な方は参考にしていただければ幸いです。

学習には終わりがありません。データベースの最適化はさまざまな側面に分かれています。ここでは、比較的完全な要約を作成し、仕事や勉強をしている同僚と共有しました。

データベースの最適化は、次の 7 つの主要な側面に分かれています:

1. テーブルの設計は、 3 正規形 に準拠する必要があります ( 適切な逆 3 正規形も使用できます)。 );

2. インデックスはクエリの速度に大きな影響を与えます (主キー インデックス、通常のインデックス、フルテキスト インデックス)。プロシージャ、トリガー、トランザクションなど。

4 、読み取りと書き込みの分離 (マスターとスレーブのデータベース)

5. SQL ステートメントの最適化 (クエリの実行速度が遅い)。

テーブルのパーティショニング: 大きなテーブルを複数のテーブルに分割します。 パーティション: テーブルの内容をストレージ用に異なる領域に割り当てます

7. mysql サーバー ハードウェアをアップグレードします。

次に最適化方法を詳しく説明します。

第一正規形と第三正規形

第一正規形:

原子性: リレーショナルデータベースである限り、テーブル内のフィールドはそれ以上分割できません。第一正規形

関係 タイプ データベース

(行と列の概念を含む) : mysql、sql サーバー、oracle、db2、infomix、sybase、postgresql を設計するときは、まずライブラリ -> テーブル -> を用意します。 ;フィールド>特定のレコード (コンテンツ): データを保存する場合、フィールドを設計する必要があります。

非リレーショナル データベース (一般的に nosql データベースと呼ばれます): memcache、redis、momgodb など。

第 2 正規形:

テーブル内に同一のレコードはなく、主キーによって解決できます

第 3 正規形:

冗長なデータは格納できませんテーブル


リバーススリーパラダイムデザイン:

アルバムテーブル

IDAlお尻の名前アルバムビュー数写真100
1 人生
100 2 仕事写真
写真リスト
IDフォトブックID100

アルバムのビューを計算したい場合は、アルバム テーブルにアルバム ビュー フィールドを追加し、写真を参照するときに同時にアルバム ビューを更新できます。

2. スロークエリをオンにする

Mysql のスロークエリはデフォルトでオフになっており、10 秒を超える SQL ステートメントはデフォルトで記録されます。

1. 遅いクエリのレコード時間を確認します:

show variables like ‘long_query_time’;
ログイン後にコピー

2. 次の関数を使用してテストします:

set long_query_time=2;
ログイン後にコピー

3.

1. 主キーインデックスの特徴:

(1) テーブルには最大 1 つの主キーインデックスが存在します (2) 1 つの主キーインデックスは複数の列を指すことができます

(3)主キーインデックスのカラムは重複値やnullは不可

(4) 主キーインデックスの効率が高い。

2. 一意のインデックスの特徴:

(1) テーブル内に複数の一意のインデックスが存在する可能性があります
(2) 一意のインデックスは複数の列を指すことができます

(3) 一意の場合インデックスでは、not null が指定されていない場合、列が空になる可能性があり、同時に複数の null が存在する可能性があります。

(4) 一意のインデックスの方が効率的です。

3. 通常のインデックス:

通常のインデックスの使用は主にクエリ効率を向上させるためです

4. フルテキスト インデックス

MySQL 独自のフルテキスト インデックス mysql5.5 は中国語をサポートしていません。ただし、必要なテーブルのストレージ エンジンは myisam です。中国語をサポートしたい場合は、(1) aphinx 中国語版 coreseek を使用する (全文インデックスを置き換える)

(2) プラグイン mysqlcft の 2 つのオプションがあります。

インデックス追加時の主な問題:

(1) クエリ条件として頻繁に使用されるフィールドにはインデックスを作成する必要があります。一意性の低いフィールドは、たとえ頻繁にクエリ条件として使用されるとしても、個別のインデックス作成には適していませんクエリ条件、

Update 非常に頻繁なフィールドはインデックスの作成には適していません

(2) WHERE 句に出現しないフィールドにはインデックスを作成しないでください。クエリの速度は向上しますが、 には影響があります。追加と削除の効率化。また、インデックス ファイルがスペースを占有します。

4. サブテーブル、パーティション

垂直サブテーブル (コンテンツメインテーブル + 追加テーブル):

コンテンツメインテーブル: さまざまなデータの一部の公開情報を格納します。 , たとえば、データの名前や追加時刻など、
は複数の追加テーブルを使用でき、追加テーブルにはデータの何らかの固有の情報が保存されます。

主な理由: コンテンツ マスター テーブル内のデータへのアクセスがより頻繁になります。

特徴: 異なるテーブル構造


水平テーブル分割:

テーブルデータを異なるテーブルに保存


特徴: テーブル構造は同じです


パーティション:

は、ディスクの異なる領域にテーブルを格納しますが、それでも 1 つのテーブルです。

基本概念:

(1)範囲 – このモードでは、データをさまざまな範囲に分割できます。たとえば、テーブルを年ごとに複数のパーティションに分割できます。

(2)List (事前定義リスト) – このモードでは、システムが事前定義リストの値によってデータを分割できます。

(3)ハッシュ (ハッシュ) – このモードでは、テーブルの 1 つ以上の列のハッシュ キーを計算でき、最後にこのハッシュ コードのさまざまな値に対応するデータ領域を分割します。たとえば、テーブルの主キーを分割するテーブルを作成できます。

(4)Key(键值)-上面Hash模式的一种延伸,这里的Hash Key是MySQL系统产生的。

分区表的限制:

(1)只能对数据表的整型列进行分区,或者数据列可以通过分区函数转化成整型列。

(2)最大分区数目不能超过1024。

(3)如果含有唯一索引或者主键,则分区列必须包含在所有的唯一索引或者主键在内。

(4)按日期进行分区很非常适合,因为很多日期函数可以用。但是对于字符串来说合适的分区函数不太多。

五、并发处理的锁机制

锁机制:在执行时,只有一个用户获得锁,其他用户处于阻塞状态,需要等待解锁。

mysql 的锁有以下几种形式:

表级锁:开销小,加锁快,发生锁冲突的概率最高,并发度最低。myisam引擎属于这种类型。

行级锁:开销大,加锁慢,发生锁冲突的概率最低,并发度也最高。innodb属于这种类型。

表锁的演示:

1.对myisam表的读操作(加读锁),不会阻塞其他进程对同一表的读请求,但会阻塞对同一表的写请求。只有当读锁释放后,才会执行其他进程的操作。

2.表添加读锁后,其他进程对该表只能查询操作,修改时会被阻塞。

3.当前进程,能够执行查询操作,不能执行修改操作。不能对没有锁定的表进行操作。

4.锁表的语法:

lock table 表名 read|write
ログイン後にコピー

5.也可以锁定多个表

6.对myisam表的写操作(加写锁),会阻塞其他进程对锁定表的任何操作,不能读写,

7.表加写锁后,则只有当前进程对锁定的表,可以执行任何操作。其他进程的操作会被阻塞。

 行锁的演示:

1.innodb存储引擎是通过给索引上的索引项加锁来实现的,这就意味着:只有通过索引条件检索数据,innodb才会使用行级锁,否则,innodb使用表锁。

2.开启行锁后,当前进程在针对某条记录执行操作时,其他进程不能操作和当前进程相同id的记录。

php里面有文件锁,在实际的项目中多数使用文件锁,因为表锁,会阻塞,当对一些表添加写锁后,其他进程就不能操作了。这样会阻塞整个网站,会拖慢网站的速度。

相关推荐:



写真名
閲覧数 2

以上がMysqlデータベースの最適化方法のまとめ(必読)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、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)

MySQL:初心者向けのデータ管理の容易さ MySQL:初心者向けのデータ管理の容易さ Apr 09, 2025 am 12:07 AM

MySQLは、インストールが簡単で、強力で管理しやすいため、初心者に適しています。 1.さまざまなオペレーティングシステムに適した、単純なインストールと構成。 2。データベースとテーブルの作成、挿入、クエリ、更新、削除などの基本操作をサポートします。 3.参加オペレーションやサブクエリなどの高度な機能を提供します。 4.インデックス、クエリの最適化、テーブルパーティション化により、パフォーマンスを改善できます。 5。データのセキュリティと一貫性を確保するために、バックアップ、リカバリ、セキュリティ対策をサポートします。

NAVICATでデータベースパスワードを取得できますか? NAVICATでデータベースパスワードを取得できますか? Apr 08, 2025 pm 09:51 PM

NAVICAT自体はデータベースパスワードを保存せず、暗号化されたパスワードのみを取得できます。解決策:1。パスワードマネージャーを確認します。 2。NAVICATの「パスワードを記憶する」機能を確認します。 3.データベースパスワードをリセットします。 4.データベース管理者に連絡してください。

Navicatプレミアムの作成方法 Navicatプレミアムの作成方法 Apr 09, 2025 am 07:09 AM

NAVICATプレミアムを使用してデータベースを作成します。データベースサーバーに接続し、接続パラメーターを入力します。サーバーを右クリックして、[データベースの作成]を選択します。新しいデータベースの名前と指定された文字セットと照合を入力します。新しいデータベースに接続し、オブジェクトブラウザにテーブルを作成します。テーブルを右クリックして、データを挿入してデータを挿入します。

MySQL:簡単な学習のためのシンプルな概念 MySQL:簡単な学習のためのシンプルな概念 Apr 10, 2025 am 09:29 AM

MySQLは、オープンソースのリレーショナルデータベース管理システムです。 1)データベースとテーブルの作成:createdatabaseおよびcreateTableコマンドを使用します。 2)基本操作:挿入、更新、削除、選択。 3)高度な操作:参加、サブクエリ、トランザクション処理。 4)デバッグスキル:構文、データ型、およびアクセス許可を確認します。 5)最適化の提案:インデックスを使用し、選択*を避け、トランザクションを使用します。

MySQLおよびSQL:開発者にとって不可欠なスキル MySQLおよびSQL:開発者にとって不可欠なスキル Apr 10, 2025 am 09:30 AM

MySQLとSQLは、開発者にとって不可欠なスキルです。 1.MYSQLはオープンソースのリレーショナルデータベース管理システムであり、SQLはデータベースの管理と操作に使用される標準言語です。 2.MYSQLは、効率的なデータストレージと検索機能を介して複数のストレージエンジンをサポートし、SQLは簡単なステートメントを通じて複雑なデータ操作を完了します。 3.使用の例には、条件によるフィルタリングやソートなどの基本的なクエリと高度なクエリが含まれます。 4.一般的なエラーには、SQLステートメントをチェックして説明コマンドを使用することで最適化できる構文エラーとパフォーマンスの問題が含まれます。 5.パフォーマンス最適化手法には、インデックスの使用、フルテーブルスキャンの回避、参加操作の最適化、コードの読み取り可能性の向上が含まれます。

NavicatでMySQLへの新しい接続を作成する方法 NavicatでMySQLへの新しい接続を作成する方法 Apr 09, 2025 am 07:21 AM

手順に従って、NAVICATで新しいMySQL接続を作成できます。アプリケーションを開き、新しい接続(CTRL N)を選択します。接続タイプとして「mysql」を選択します。ホスト名/IPアドレス、ポート、ユーザー名、およびパスワードを入力します。 (オプション)Advanced Optionsを構成します。接続を保存して、接続名を入力します。

phpmyadminを開く方法 phpmyadminを開く方法 Apr 10, 2025 pm 10:51 PM

次の手順でphpmyadminを開くことができます。1。ウェブサイトコントロールパネルにログインします。 2。phpmyadminアイコンを見つけてクリックします。 3。MySQL資格情報を入力します。 4.「ログイン」をクリックします。

NAVICATでSQLを実行する方法 NAVICATでSQLを実行する方法 Apr 08, 2025 pm 11:42 PM

NAVICATでSQLを実行する手順:データベースに接続します。 SQLエディターウィンドウを作成します。 SQLクエリまたはスクリプトを書きます。 [実行]ボタンをクリックして、クエリまたはスクリプトを実行します。結果を表示します(クエリが実行された場合)。

See all articles