ホームページ データベース mysql チュートリアル 数百万のデータを含む mysql テスト環境の概要

数百万のデータを含む mysql テスト環境の概要

Apr 17, 2019 pm 05:19 PM
mysql

Mysql は非常に優れた無料データベースとして広く利用されており、通常私たちが開発するプロジェクトのデータが 100 万を超えることはほとんどありません。最近、私は数百万のデータの場合の mysql の最適化に関する詳細な研究に多くの時間を費やしました。たくさんの問題に遭遇して解決したので、それを皆さんと共有したいと思います。貴重なご意見大歓迎です!

関連する推奨事項: 「MySQL チュートリアル

テスト環境

データの総数は 300 万で、約1G のディスク容量

データ構造

表1 news [ 文章表 引擎 myisam 字符集 utf-8 ]
-----------------------------------------------------
idint11主键自动增加
cateint11索引
titlevarchar200标题(便于基础搜索做了索引)
contenttext文章正文
dateint11文章发布时间(时间戳形式)
表2 cate [ 文章分类表 引擎 myisam 字符集 utf-8 ]
-----------------------------------------------------
cate_idint11主键自动增加
cate_namevarchar200文章标题

クエリ総数

myIsam 引擎下
select count(*) as total from news
//耗时 0.001秒 极快 
//带上条件
select count(*) as total from news where cate = 1
耗时 0.046秒 可以接受的速度
innodb 引擎下
select count(*) as total from news
//耗时 0.7秒 很慢
select count(*) as total from news where cate = 1
耗时 0.7秒 很慢

理由2 つのエンジンのクエリ速度は大きく異なりますか?

InnoDB はテーブル内の特定の行数を保存しません。つまり、select count(*) from table を実行するとき、InnoDB はテーブル全体をスキャンして、そこにある行数を計算する必要があります。は。

MyISAM は保存された行数を読み取るだけです。

count(*) ステートメントに where 条件が含まれている場合、2 つのテーブルの操作は若干異なることに注意してください。InnoDB タイプのテーブルは count(*) または count (主キー) に加えて wherecol 条件を使用します。 。 Col列は、テーブルの主キー以外の一意性制約インデックスを持つ列です。この方法では、クエリ速度が非常に速くなります。これは、テーブル全体のスキャンを回避するためです。

概要

mysql は count(*) を使用して 300 万個のデータ (myisam エンジン) のデータの総数をクエリし、条件を含みます (インデックスは正しく設定されています) )、実行時間は正常です。頻繁に読み取られるデータの場合は、myIsam エンジンを使用することをお勧めします。

以上が数百万のデータを含む mysql テスト環境の概要の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

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

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

PHPコンテナを自動構造をサポートする方法は? PHP環境の継続的に統合されたCI構成方法 PHPコンテナを自動構造をサポートする方法は? PHP環境の継続的に統合されたCI構成方法 Jul 25, 2025 pm 08:54 PM

PHPコンテナが自動構造をサポートできるようにするために、コアは連続統合(CI)プロセスの構成にあります。 1. DockerFileを使用して、基本的な画像、拡張インストール、依存関係管理、許可設定など、PHP環境を定義します。 2. GitlabciなどのCI/CDツールを構成し、.gitlab-ci.ymlファイルを介してビルド、テスト、展開段階を定義して、自動構造、テスト、展開を実現します。 3. phpunitなどのテストフレームワークを統合して、コードの変更後にテストが自動的に実行されることを確認します。 4. Kubernetesなどの自動展開戦略を使用して、deployment.yamlファイルを介して展開構成を定義します。 5. DockerFileを最適化し、マルチステージ構造を採用します

PHP PHPログコレクションおよび分析ツールを使用してログ管理システムを構築する方法 PHP PHPログコレクションおよび分析ツールを使用してログ管理システムを構築する方法 Jul 25, 2025 pm 08:48 PM

[ロギング方法]を選択します。初期段階では、PHPに組み込みERROR_LOG()を使用できます。プロジェクトが拡張されたら、モノログなどの成熟したライブラリに切り替え、複数のハンドラーとログレベルをサポートし、ログにタイムスタンプ、レベル、ファイルのライン番号、エラーの詳細が含まれていることを確認してください。 2。設計ストレージ構造:少量のログをファイルに保存できます。多数のログがある場合は、多数の分析がある場合はデータベースを選択します。 mysql/postgresqlを使用して構造化されたデータを使用します。 ElasticSearch Kibanaは、半構造化/非構造化に推奨されます。同時に、バックアップと定期的なクリーニング戦略のために策定されています。 3。開発および分析インターフェイス:検索、フィルタリング、集約、視覚化機能が必要です。キバナに直接統合するか、PHPフレームワークチャートライブラリを使用して、インターフェイスのシンプルさと容易さに焦点を当てて自己開発を開発することができます。

財務データストレージのためにMySQLを最適化します 財務データストレージのためにMySQLを最適化します Jul 27, 2025 am 02:06 AM

MySQLは金融システムに最適化する必要があります。1。財務データを使用して、10進数タイプを使用した精度を確保する必要があり、タイムゾーンの問題を回避するために時間分野でデータを使用する必要があります。 2。インデックス設計は合理的でなければなりません。フィールドの頻繁な更新を避けてインデックスを構築し、クエリの順序でインデックスを組み合わせ、定期的に役に立たないインデックスをクリーンにします。 3.トランザクションを使用して、一貫性を確保し、トランザクションの粒度を制御し、長いトランザクションを回避し、それに埋め込まれた非コア操作を回避し、ビジネスに基づいて適切な分離レベルを選択します。 4。時間ごとに履歴データを分割し、コールドデータをアーカイブし、圧縮テーブルを使用してクエリ効率を向上させ、ストレージを最適化します。

リアルタイムのデータフィード用にMySQLを最適化します リアルタイムのデータフィード用にMySQLを最適化します Jul 26, 2025 am 05:41 AM

tooptimizemysqlforreal-timedatafeeds、firstchoosetheinnodbstorageentionsionsionsionsionsionsionsionsionsionsdrow-fortemporarydata、およびpartitiontime-seriesdatabytime.second、indextrategivallyは、dexestowhere、

雲の移行のためのMySQLデータベースコストベネフィット分析 雲の移行のためのMySQLデータベースコストベネフィット分析 Jul 26, 2025 am 03:32 AM

MySQLがクラウドに移動する価値があるかどうかは、特定の使用シナリオに依存します。あなたのビジネスを迅速に立ち上げる必要がある場合は、弾力的に拡張し、運用とメンテナンスを簡素化し、従量制のモデルを受け入れることができます。ただし、データベースが長期間安定している場合、レイテンシに敏感な、またはコンプライアンスの制限が制限されている場合、費用対効果が高い場合があります。コストを管理するためのキーには、適切なベンダーとパッケージの選択、リソースの合理的な構成、予約されたインスタンスの利用、バックアップログの管理、クエリパフォーマンスの最適化が含まれます。

オブジェクトレベルの特権でMySQLを保護します オブジェクトレベルの特権でMySQLを保護します Jul 29, 2025 am 01:34 AM

Tosecuremysqleffectivilly、useobject-levelprivilegestolimituseracesseracessbadeds.beginbyunderstanding thatobject-leveligesapplytodatabases、Tables、orcolumns、subfice finercontrolthangloblabliledeges.next、適用

大規模なMySQLテーブルを管理するためのベストプラクティス 大規模なMySQLテーブルを管理するためのベストプラクティス Aug 05, 2025 am 03:55 AM

大規模なテーブルを扱う場合、MySQLのパフォーマンスと保守性が課題に直面し、構造設計、インデックス最適化、テーブルサブテーブル戦略などから開始する必要があります。オーバーレイインデックスを使用して、クエリ効率を向上させます。スロークエリログを定期的に分析し、無効なインデックスを削除します。 2。パーティションテーブルの合理的な使用:クエリとメンテナンスの効率を改善するための時間範囲やその他の戦略に従ってパーティションをかけますが、分割と削減の問題に注意を払う必要があります。 3.分離とライブラリの分離の読み取りと書き込みを検討してください。ライブラリの分離とテーブルの分離は、大量のデータを備えたシナリオに適しています。ミドルウェアを使用して、トランザクションとクロスストアのクエリの問題を評価することをお勧めします。早期計画と継続的な最適化が重要です。

コンテンツ管理システム(CMS)のMySQLの最適化 コンテンツ管理システム(CMS)のMySQLの最適化 Jul 28, 2025 am 03:19 AM

toimprovemysqlperformanceforcmsplatformslikewwordpress、最初にaCachinginginslikEridEdisoredisoredisoredisoredisoredisoredisoredisoredisoredisomcaching(承認可能)、およびandusepagecachingpluginstoservestaticfiles.sond、sedemysemysemysqlconfigurationiincurationbyincurationcurationcurationは

See all articles