mysqlを最適化しますか、それともキャッシュを使用しますか?
具体的には、私が比較したい 2 つの最適化戦略は、MySQL とキャッシュの最適化です。これらの最適化は相互に関係しており、どちらかを選択する唯一の理由は、どちらもリソース、つまり開発時間にコストがかかるためであることを、事前に指摘してください。
MySQL の最適化
MySQL を最適化するときは、通常、まず mysql に送信されたクエリ ステートメントを確認してから、explain コマンドを実行します。少し見直した後の一般的なアプローチは、インデックスを追加したり、スキーマに調整を加えたりすることです。
利点
1. アプリケーションを使用するすべてのユーザーにとって、最適化されたクエリは高速です。インデックスは対数的な複雑さの速度でデータを取得し (電話帳を検索するときの分数化とも呼ばれ、検索範囲が徐々に狭くなります)、データ量が増加しても良好なパフォーマンスを維持するためです。インデックスのないクエリの結果のキャッシュは、データが増大するにつれてパフォーマンスが低下する場合があります。データが増大すると、キャッシュを見逃したユーザーは不快な経験をし、アプリケーションが使用できなくなる可能性があります。
2. MySQL を最適化するとき、キャッシュの無効化やキャッシュされたデータの有効期限について心配する必要はありません。
3. MySQL を最適化すると、技術的なアーキテクチャが簡素化され、開発環境でのコピーや作業が容易になります。
短所
1. クエリによっては、インデックス作成だけではパフォーマンスを向上させることができず、場合によっては、アプリケーションによっては非常に面倒なモードの変更も必要になる場合があります。
2. 一部のスキーマ変更は非正規化(データのバックアップ)に使用される場合があります。これは DBA にとって一般的な手法ですが、アプリケーションによってすべてが更新されるようにするために所有権が必要になるか、そのような変更を保証するためにトリガーをインストールする必要があります。
3. 一部の最適化方法は MySQL に固有の場合があります。つまり、基盤となるソフトウェアが複数のデータベースで動作するように移植されている場合、インデックスの追加以外のより複雑な最適化手法の一部が普遍的であることを保証するのは困難です。
キャッシュの使用
この種の最適化では、アプリケーションの実際の状況を分析し、高価な処理部分を MySQL から分離し、memcached や Redis などのサードパーティのキャッシュに置き換える必要があります。
利点
1. 大規模な集計やグループ化クエリなど、MySql 自体による最適化が難しい一部のクエリでは、キャッシュがうまく機能します。
2. キャッシュは、システムのスループットを向上させるための良い解決策である可能性があります。たとえば、複数の人が同時にアプリケーションにアクセスすると、応答速度が非常に遅くなります。
3. キャッシュは、別のアプリケーションの上に構築する方が簡単かもしれません。たとえば、アプリケーションは MySQL を使用してデータを保存する別のソフトウェア パッケージのフロントエンドである可能性があり、このソフトウェア パッケージにデータベースを変更することは非常に困難です。
短所
1. データが複数の外部アクセスパラダイムを提供する場合(たとえば、異なるページに異なる形式で表示される)、キャッシュの有効期限切れや更新が困難になる可能性があり、および/または期限切れを許容する必要がある場合があります。データ データ。実現可能な代替案は、より高度なキャッシュ メカニズムを設計することです。もちろん、キャッシュを複数回取得すると待ち時間が増加するという欠点もあります。
2. 高価なオブジェクトをキャッシュすると、キャッシュを見逃したユーザーにとって潜在的なパフォーマンスの違いが生じる可能性があります (MySQL を最適化する利点 #1 を参照)。優れたパフォーマンスの実践では、ユーザー間の差異を単に平均化するのではなく (キャッシュがそうする傾向にあります)、ユーザー間の差異を最小限に抑えるよう努めるべきであることを示唆しています。
3. 単純なキャッシュ実装では、雪崩効果などのいくつかの微妙な脆弱性に対処できません。つい先週、私は、同じキャッシュされたコンテンツを同時に再生成しようとする複数のユーザー要求によってデータベース サーバーが圧倒されている人を支援しました。正しい戦略は、キャッシュ再生成リクエストをシリアル化するために、ある程度のレベルのロックを導入することです。
まとめ
通常の状況では、最初に MySQL を最適化することが私の意見では最も適切な解決策であるため、ユーザーにはまず MySQL を最適化することをお勧めします。しかし、長期的には、ほとんどのアプリケーションには、上記のソリューションをある程度同時に実装する必要があるいくつかのユースケースが発生することになります。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

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

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









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

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

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

MySQLでテーブルをコピーするには、新しいテーブルの作成、データの挿入、外部キーの設定、インデックスのコピー、トリガー、ストアドプロシージャ、および機能が必要です。特定の手順には、同じ構造を持つ新しいテーブルの作成が含まれます。元のテーブルからデータを新しいテーブルに挿入します。同じ外部キーの制約を設定します(元のテーブルに1つがある場合)。同じインデックスを作成します。同じトリガーを作成します(元のテーブルに1つがある場合)。同じストアドプロシージャまたは関数を作成します(元のテーブルが使用されている場合)。

次のコマンドでmysqlデータベースを表示します。サーバーに接続します:mysql -u username -pパスワードrun showデータベース。すべての既存のデータベースを取得するコマンド[データベース]を選択します。データベース名を使用します。テーブルを表示:表を表示します。テーブル構造を表示:テーブル名を説明してください。データを表示:[テーブル名]から[ *]を選択します。

Passwordが暗号化された形式で保存されているため、MariadbのNavicatはデータベースパスワードを直接表示できません。データベースのセキュリティを確保するには、パスワードをリセットするには3つの方法があります。NAVICATを介してパスワードをリセットし、複雑なパスワードを設定します。構成ファイルを表示します(推奨されていない、高リスク)。システムコマンドラインツールを使用します(推奨されません。コマンドラインツールに習熟する必要があります)。

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

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