PHP 애플리케이션의 성능을 크게 최적화하기 위해 MySQL 인덱스 생성
이 기사는 PHP 애플리케이션의 성능을 크게 최적화하기 위한 인덱싱 관련 내용을 주로 소개하는 mysql에 대한 관련 지식을 제공합니다. 모두에게 도움이 되기를 바랍니다.
원인
친구가 두 달 전 빠른 온라인 홍보를 위해 프로젝트를 하려고 했고, 특정 회사의 소스코드를 직접 구매해서 판매자에게 온라인 배포를 요청했습니다. 소스코드를 본 후 친구에게 직접 이렇게 말했습니다: '나 속았어.
다음과 같은 평가를 위한 근거가 있습니다.
실시간에 가까운 애플리케이션으로서 핵심 코드는 PHP로 작성되었으며, 여러 시나리오의 동시 및 반복 요청은 데이터베이스 테이블 레코드를 통해 제어됩니다.
PHP 개발에는 문제가 없지만, 다른 엔지니어는 CLI 모드에 대해 모르는 것 같았으나 프로그램의 논스톱 실행을 위해 예약된 작업(crontab)을 사용했기 때문에 매일 수십 개의 컬 예약된 작업이 실행되었습니다. 분 - 코드에는 .php, class1-1.php 등이 많아 한눈에 그 존재 목적을 알기 어렵습니다. 데이터베이스를 읽기 위해 반복하고 있으며 명명 규칙이 혼란스럽습니다.
- 물론 돈을 벌 수 있는 코드는 좋은 코드(상대방이 이 코드를 통해 돈을 버는 코드)이기 때문에 그것에 너무 연연하지는 않습니다. 초기 생각에는 4코어 8G 구성으로는 1만명의 고객에게 서비스를 제공하기 어렵지만 5,000명이면 충분할 것이라고 생각했습니다.
Turning
이번 주에만 갑자기 Alibaba Cloud로부터 CPU 사용량이 너무 높다는 알람 문자 메시지와 이메일을 자주 받았습니다. 마케팅 프로모션이 잘 진행되고 있고, 이용자 수도 눈에 띄게 늘었다고 생각하시나요? 친구들한테 물어보니 이용자가 300명도 안됐어요!
코드를 받은 지 두 달이 지났습니다. 틈날 때마다 가끔 살펴보며 이미 코드의 구조와 주요 기능에 대해 전반적으로 이해하고 있습니다. 이제 심각한 성능 문제가 있으므로 성능 최적화를 시도해 볼 차례입니다.
수십 개의 예약된 작업이 쉬지 않고 실행되고 지속적으로 시스템을 구동한다는 점을 고려하면 예약된 작업과 관련된 기능을 먼저 이해해야 합니다. 내 자신의 이해를 바탕으로 더 이상 필요하지 않은 20개 이상의 계획된 작업을 먼저 중단했습니다. 쓸모없는 예약 작업을 일시 중지한 후 전체 시스템 CPU 사용량이 60% 이상으로 떨어졌고, 귀찮은 알림 문자 메시지와 이메일이 마침내 중단되었습니다. 하루를 기다려도 친구들은 기능이 영향을 받았다고 보고하지 않았는데, 이는 아이디어와 출발점이 정확하다는 것을 보여줍니다.
그런데 200명 이상의 사용자가 이렇게 리소스를 소비하고 있으니 뭔가 문제가 있는 게 틀림없습니다. 오늘 시간이 있을 때 다시 서버에 접속해서 top 명령을 실행해 보니
mysql프로세스가 CPU 자원의 200% 이상을 차지하고 있는 것을 발견했습니다. 소스 코드를 읽어보니 MySQL의 사용량이 많은 데에는 이유가 있고 그럴 수도 있다는 것을 알지만 여전히 왜 그렇게 많은 리소스를 소비하는지 알고 싶습니다.
MySQL 서버에 로그인하여 느린 로그가 활성화되어 있는지 확인하세요. '%slow%';와 같은 변수를 표시하고 느린 쿼리 로그가 활성화되어 있는지 확인하세요.
그런 다음 로그를 확인하고 특정 SQL 문이 항상 로그에 나타납니다.요약
개발 프로젝트에서 엔지니어는 "사용 가능한" 코드뿐만 아니라 "사용하기 쉬운" 코드도 작성해야 합니다. 이 예에서는 두 개의 인덱스를 생성하여 시스템 성능을 크게 향상시킬 수 있습니다. 즉, 코드를 "사용 가능"에서 "사용하기 쉬움"으로 변경합니다.
이 글에서 언급한 성능 최적화는 운영과 유지 관리에 중점을 두고 있으며 코드에서의 성능 최적화는 아직 다루지 않았습니다. 그러나 일반적인 원칙은 정확합니다. 캐시를 더 많이 사용하고 느린 IO 장치의 동기 읽기를 최대한 줄이는 것입니다.
추천 학습: "mysql 비디오 튜토리얼", "PHP 비디오 튜토리얼"
위 내용은 PHP 애플리케이션의 성능을 크게 최적화하기 위해 MySQL 인덱스 생성의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











PHP 8.4는 상당한 양의 기능 중단 및 제거를 통해 몇 가지 새로운 기능, 보안 개선 및 성능 개선을 제공합니다. 이 가이드에서는 Ubuntu, Debian 또는 해당 파생 제품에서 PHP 8.4를 설치하거나 PHP 8.4로 업그레이드하는 방법을 설명합니다.

CakePHP는 PHP용 오픈 소스 프레임워크입니다. 이는 애플리케이션을 훨씬 쉽게 개발, 배포 및 유지 관리할 수 있도록 하기 위한 것입니다. CakePHP는 강력하고 이해하기 쉬운 MVC와 유사한 아키텍처를 기반으로 합니다. 모델, 뷰 및 컨트롤러 gu

VS Code라고도 알려진 Visual Studio Code는 모든 주요 운영 체제에서 사용할 수 있는 무료 소스 코드 편집기 또는 통합 개발 환경(IDE)입니다. 다양한 프로그래밍 언어에 대한 대규모 확장 모음을 통해 VS Code는

CakePHP는 오픈 소스 MVC 프레임워크입니다. 이를 통해 애플리케이션 개발, 배포 및 유지 관리가 훨씬 쉬워집니다. CakePHP에는 가장 일반적인 작업의 과부하를 줄이기 위한 여러 라이브러리가 있습니다.

이 튜토리얼은 PHP를 사용하여 XML 문서를 효율적으로 처리하는 방법을 보여줍니다. XML (Extensible Markup Language)은 인간의 가독성과 기계 구문 분석을 위해 설계된 다목적 텍스트 기반 마크 업 언어입니다. 일반적으로 데이터 저장 AN에 사용됩니다
