PHP 開発者がよく犯す MySQL の 10 個の間違いの分析と修正_PHP チュートリアル
1. InnoDB の代わりに MyISAM を使用する
完全に間違っています、反論の理由:
まず第一に、元の記事では MyISAM がデフォルトで使用されると述べていますが、実際には MySQL 5.5.x では InnoDB がデフォルトのテーブルになっています。エンジン。
さらに、単に InnoDB を使用するだけではすべての問題が解決されるわけではありません。場合によっては、アプリケーションのパフォーマンスが 10%、あるいは 40% 低下する可能性もあります。
フォーラムセクションテーブル、ニュース分類テーブル、各種コードテーブル、その他長時間運用されないテーブルなど、特定のビジネスに対応するのが最善の方法ですが、それでも優れたパフォーマンスを持つMyISAMエンジンを使用する必要があります。
ユーザー、アカウント、パイプラインなど、データの整合性とタイミングが厳密に要求されるトランザクション処理を必要とするものには、InnoDB エンジンを使用する必要があり、アプリケーションもトランザクション処理メカニズムをうまく活用する必要があります。もちろん、トランザクション処理は必然的に大幅なパフォーマンスの低下をもたらしますが、これは単純な同時実行性の高いアプリケーションでは必要です。
最後に、外部キー制約はパフォーマンスに重大な影響を与えるため、一般にパブリック Web インターネット アプリケーションでは使用されません。データの整合性は、依然としてプログラマー、またはアプリケーション アーキテクチャ自体の堅牢性に依存して維持されています。正式な 3 番目のパラダイムは、企業の内部 MIS システムおよび 12306 などの Web サイトでのみ使用されます。
2. PHP の mysql メソッドを使用する
完全に間違っているわけではありませんが、適切に選択する必要があります:
Mysqli は優れていますが、すべてのサーバーが PHP 用の mysqli サポートをコンパイルしているわけではありません。
アプリケーションが自分でデプロイしたサーバーのみを使用することが決定でき、アプリケーションが完全に自分で開発されている場合は、mysqli が最適な選択です。
しかし、アプリケーションが仮想ホストにデプロイされる可能性が高い場合、または他の人(分散プロジェクトなど)によってデプロイされる可能性が高い場合は、MySQL 関数セットを正直に使用し、適切にカプセル化するか、SQL インジェクションを防ぐために成熟したフレームワークを使用することをお勧めします。 。
3. ユーザー入力をフィルタリングしない
言うまでもなく、これは MagicQuote または成熟したフレームワークのいずれかです。 SQL インジェクションは古いトピックです。
4. UTF-8 を使用しないでください
ほとんどの場合、そうですが、次のことも慎重に考慮する必要があります:
UTF-8 の 1 文字は 3 バイトを占有するため、他のファイルよりも大きいことを知っておく必要があります。 GBK などのエンコーディングは 33%。つまり、同じ Web ページが UTF-8 エンコードで 100KB である場合、GBK エンコードでは 66KB にしかならないということです。したがって、PHP が UTF-8 を使用するように決定されている場合でも、フロントエンド ページは状況に応じて必要なエンコーディングを選択する必要があります。ただし、PHP が UTF-8 を使用し、フロントエンド テンプレートが GBK で、テンプレート エンジンが強力でない場合は、トランスコーディング作業で十分です。したがって、単純に UTF-8 を選択するのではなく、必要なエンコーディングを使用するようにしてください。
最後の文: UTF-8 では strlen("I")=3、GBK では strlen("I")=2
5. SQL を使用する必要がある場合は PHP を使用する
適宜検討してください。 :
たとえば、登録時間と投稿時間の効果を実現するためにテーブルを作成するときに、デフォルト値として CURRENT_TIMESTAMP を入力することに慣れている人もいます。 または、時刻判定 SQL 文に SELECT x FROM tab1 WHERE regdate のように記述します。MySQL の時刻関数を使用せず、アプリケーション内で時刻を計算するのが正しい方法です。分散アプリケーションの場合、時刻を均一に管理するためにタイムサーバーが必要です。
記事内で言及されている MySQL 数学関数の一部も注意して使用する必要があります。大規模なアプリケーションでは、データベースへの負担が最も大きくなることが多く、複雑な WHERE ステートメントがクエリ速度の低下の原因となるためです。したがって、計算はコア データベースではなく、グローバルな安定性に影響を与えない安価なアプリケーション サーバーにできるだけ配置する必要があります。
6. クエリを最適化していない
言うまでもなく、大規模なアプリケーションでは、2 つのクエリを記述した場合でも、PHP を使用してデータをマージできます。
7. 間違ったデータ型の使用
INT、TinyINT、VARCHAR、CHAR、TEXT などのフィールド型を適切に選択することに問題はありません。
Date、DateTime、TIMESTAMP の 3 つの型は大規模なアプリケーションでは使用できません。代わりに INT(10) UNSIGNED を使用する必要があります。
1つはパフォーマンス、もう1つはアプリケーション、特にPHPにとってUNIX_TIMESTAMPタイムスタンプを変換するのに非常に便利であるということです。 Date を使用してさまざまな時刻形式を出力するのは面倒です。
8. SELECT クエリで * を使用する
9. インデックスが不十分または過剰である
インデックスは必要ですが、インデックスによってクエリを解決できない場合は、memcache または nosql ソリューションを検討してください。
10. バックアップはありません
これは作者が数字をでっち上げているだけですか?
11. さらに: 他のデータベースは考慮されていません
これは全く正しいです。アプリケーションでは、アプリケーション用に他のデータベースを選択するだけでなく、特定のビジネス タイプに対して同じアプリケーション内で複数のデータベースを並行して使用することも必要です。データベースでなくても、その他のさまざまなキャッシュ、メモリストレージ、その他のソリューションであっても。

ホット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)

ホットトピック











PHP 8.4 では、いくつかの新機能、セキュリティの改善、パフォーマンスの改善が行われ、かなりの量の機能の非推奨と削除が行われています。 このガイドでは、Ubuntu、Debian、またはその派生版に PHP 8.4 をインストールする方法、または PHP 8.4 にアップグレードする方法について説明します。

ファイルのアップロードを行うには、フォーム ヘルパーを使用します。ここではファイルアップロードの例を示します。

CakePHP は、PHP 用のオープンソース フレームワークです。これは、アプリケーションの開発、展開、保守をより簡単にすることを目的としています。 CakePHP は、強力かつ理解しやすい MVC のようなアーキテクチャに基づいています。モデル、ビュー、コントローラー

MySQL 8.4 (2024 年時点の最新の LTS リリース) で導入された主な変更の 1 つは、「MySQL Native Password」プラグインがデフォルトで有効ではなくなったことです。さらに、MySQL 9.0 ではこのプラグインが完全に削除されています。 この変更は PHP および他のアプリに影響します

Visual Studio Code (VS Code とも呼ばれる) は、すべての主要なオペレーティング システムで利用できる無料のソース コード エディター (統合開発環境 (IDE)) です。 多くのプログラミング言語の拡張機能の大規模なコレクションを備えた VS Code は、

CakePHP はオープンソースの MVC フレームワークです。これにより、アプリケーションの開発、展開、保守がはるかに簡単になります。 CakePHP には、最も一般的なタスクの過負荷を軽減するためのライブラリが多数あります。

このチュートリアルでは、PHPを使用してXMLドキュメントを効率的に処理する方法を示しています。 XML(拡張可能なマークアップ言語)は、人間の読みやすさとマシン解析の両方に合わせて設計された多用途のテキストベースのマークアップ言語です。一般的にデータストレージに使用されます
