最近公司在用一个类似于BLOG的一个系统来管理项目, PHP+MYSQL架构,同事反应这个系统打开项目的时候非常慢,由于这个系统的服务器在美国,为了查找问题,首先从ftp站点把源文件下载下来,然后用phpmyadmin把mysql数据库的文件备份下来,这样就可以在本地虚拟机搭建起了一个测试环境,
ubuntu10.4+apache2+mysql+php
开始做一些简单配置系统就开始运行,可能跟源系统的具体配置不一样,php运行起来还是有点错误,结果导致apache2的错误日志文件急速增长,最后通过在php语句中添加错误屏蔽语句才解决这个,这样系统总算能运行起来了,
接下来开始优化一些mysql的参数变量,做了些修改以后还是觉得没有明显的改善。
设置慢查询,查询结果如下:
mysqldumpslow mysql-slow.log,发现下面这条语句耗时最多,而且需要重复运行很多遍
sbvgroup@ubuntu104:/var/log/mysql$ mysqldumpslow mysql-slow.log
Reading mysql slow query log from mysql-slow.log
Count: 29 Time=3.68s (106s) Lock=0.00s (0s) Rows=646.8 (18757), root[root]@localhost
SELECT
prj_id, dep_id
FROM
sys_projeto,
sys_grupo,
sys_grupo_projeto,
sys_usuario_grupo,
sys_usuario,
sys_departamento,
sys_departamento_projeto,
sys_usuario_projeto_departamento
WHERE
prj_remove 'S'
AND grp_remove 'S'
AND grpr_remove 'S'
AND usu_id = '100048' AND usu_remove 'S'
AND usug_remove 'S'
AND dep_remove 'S'
AND depp_remove 'S'
AND usupd_remove 'S'
AND usu_id = usug_idusuario
AND usug_idgrupo = grp_id
AND grp_id = grpr_idgrupo
AND grpr_idprojeto = prj_id
AND usu_id = usupd_idusuario
AND prj_id = usupd_idprojeto
AND prj_id = depp_idprojeto
AND dep_id = usupd_iddepartamento
AND dep_id = depp_idderpatamento
AND usupd_iddepartamento '100048'
UNION
SELECT
prj_id, dep_id
FROM sys_projeto,
sys_usuario,
sys_departamento,
sys_departamento_projeto
WHERE prj_remove 'S'
AND usu_remove 'S'
AND dep_remove 'S'
AND depp_remove 'S'
AND dep_id = depp_idderpatamento
AND depp_idprojeto = prj_id
AND usu_id = '100048'
AND prj_idgerente = usu_id
然后针对语句条用的表字段做了些索引,结果得到改善,本人对sql语句不是很精通,可能是这条语句本身的执行效率就不高,再加上没有适当索引,所以导致系统运行很慢。

MySQLは、非同期、半同期、およびグループ複製の3つのモードを介してデータの複製を処理します。 1)非同期の複製パフォーマンスは高くなりますが、データが失われる可能性があります。 2)半同期複製により、データセキュリティが向上しますが、遅延が増加します。 3)グループレプリケーションは、高可用性要件に適したマルチマスターレプリケーションとフェールオーバーをサポートします。

説明ステートメントは、SQLクエリのパフォーマンスを分析および改善するために使用できます。 1.説明ステートメントを実行して、クエリプランを表示します。 2。出力結果を分析し、アクセスの種類、インデックスの使用量に注意し、順序を結合します。 3.分析結果に基づいてインデックスを作成または調整し、結合操作を最適化し、フルテーブルスキャンを回避してクエリ効率を向上させます。

論理バックアップにMySQLDUMPとホットバックアップにMySQLenterPriseBackupを使用することは、MySQLデータベースをバックアップする効果的な方法です。 1. mysqldumpを使用してデータベースをバックアップします:mysqldump-uroot-pmydatabase> mydatabase_backup.sql。 2。ホットバックアップにmysqlenterprisebackupを使用:mysqlbackup - user = root-password = password - backup-dir =/path/to/backupbackup。回復するときは、対応する寿命を使用します

MySQLのクエリが遅い主な理由には、インデックスの欠落または不適切な使用、クエリの複雑さ、過剰なデータボリューム、および不十分なハードウェアリソースが含まれます。最適化の提案には以下が含まれます。1。適切なインデックスを作成します。 2。クエリステートメントを最適化します。 3.テーブルパーティションテクノロジーを使用します。 4.適切にハードウェアをアップグレードします。

MySQLビューは、SQLクエリの結果に基づいた仮想テーブルであり、データを保存しません。 1)ビューは複雑なクエリを簡素化し、2)データセキュリティを強化し、3)データの一貫性を維持します。ビューは、テーブルのように使用できるデータベースにクエリを保存しますが、データは動的に生成されます。

MySQLdiffersfromotherSQLdialectsinsyntaxforLIMIT,auto-increment,stringcomparison,subqueries,andperformanceanalysis.1)MySQLusesLIMIT,whileSQLServerusesTOPandOracleusesROWNUM.2)MySQL'sAUTO_INCREMENTcontrastswithPostgreSQL'sSERIALandOracle'ssequenceandt

MySQLパーティション化により、パフォーマンスが向上し、メンテナンスが簡素化されます。 1)大きなテーブルを特定の基準(日付範囲など)、2)物理的に独立したファイルに物理的に分割する、3)MySQLはクエリするときに関連するパーティションに焦点を合わせることができます。

mysqlで許可を許可および取り消す方法は? 1。grantallprivilegesondatabase_name.to'username'@'host 'などの許可を付与するために付与ステートメントを使用してください。 2。Revokeallprivilegesondatabase_name.from'username'@'host 'など、Revoke Statementを使用して、許可のタイムリーな通信を確保します。


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

PhpStorm Mac バージョン
最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール

VSCode Windows 64 ビットのダウンロード
Microsoft によって発売された無料で強力な IDE エディター

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

MantisBT
Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

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

ホットトピック









