동일한 mariaDB는 PHP 7.4에 FAT FREE가 적용된 PHP 7.1보다 훨씬 느리게 삽입됨
기존 PHP/Fat Free 프로젝트를 php 7.1에서 7.4로 마이그레이션하려고 하는데 일부 쿼리를 완료하는 데 너무 오래 걸리는 것을 발견했습니다(10배 이상의 시간).특히 삽입물이 좀 있어요.저는 xampp(7.1.32 및 7.4.6)로 로컬 호스트에서 동일한 프로젝트를 실행하고 있으며 항상 동일한 데이터베이스로 동일한 MariaDB 서버(v10.4.8)를 사용하고 있습니다.
코드는 그와 비슷한 것입니다.
foreach($ridiculouslyLongArray as $row) //I'm talking about some millons of rows
$this->db->exec("INSERT INTO a_table (field1, field2, fieldn) VALUES ('".$row['field1']."', '".$row['field2']."', '".$row['fieldn']."')");
//네, sql 주입 가능합니다. 그것도 수정하겠습니다.
$this->db의 정의는 다음과 같습니다.
$this->db = new DB\SQL('mysql:host=localhost;port=3306;dbname=something', 'dbuser', 'dbpassword', array(\PDO::ATTR_ERRMODE=>\PDO::ERRMODE_EXCEPTION));
PDO 포장지인 것으로 알고 있습니다.
쿼리마다 여러 행을 삽입하도록 코드를 변경하려고 했지만 쿼리는 여전히 php 7.1보다 훨씬 시간이 많이 걸립니다.
이것은 내 설정입니다.
->Original Project(쿼리가 잘 실행되는 프로젝트)
- PHP 7.1.32 (메모리 제한 2048mb)
- 지방 프리 3.6.4
- MariaDB 10.4.8
->New Project(쿼리 실행 속도가 느려지는 프로젝트)
- PHP 7.4.6 (메모리 제한 2048mb)
- 지방 프리 3.7.2
- MariaDB 10.4.8 (이전 서버와 동일한 서버 및 DB)
시간 내주셔서 감사합니다.
편집: 방금 MySQL용 PDO 드라이버가 버전마다 다르다는 것을 발견했습니다.
PHP 7.1의 경우:
- mysqlnd 5.0.12-dev - 20150407 - $Id: 38fea24f2847fa7519001be390c98ae0acafe387$
PHP 7.4의 경우:
- 나의 7.4.6번째
편집 2: 쿼리가 트랜잭션에 있으며 동일한 서버의 동일한 데이터베이스에 있는 동일한 테이블 위에 동일한 삽입이므로 동일한 인덱스 및 동일한 dB 엔진을 사용합니다.PHP 버전만 코드가 바뀌는 건 없습니다.
이는 주석에 명시적으로 언급되지는 않았지만, 다소 느려지는 원인이 될 수 있는 다른 것은 쿼리 로깅입니다.
기본적으로 Fat-Free는 모든 DB 쿼리를 기록합니다.Gazillion 삽입을 실행하는 경우 해당 삽입이 모두 기록됩니다.아직 그렇지 않다면 운영 중에 쿼리 로깅을 비활성화할 것을 권장합니다.부트스트랩/서비스 파일이 DB 연결을 생성하는 위치에 상관없이 다음을 추가합니다.
$f3->set('db', new DB\SQL(/* config stuff */));
if(ENVIRONMENT === 'PRODUCTION') { // or whatever you use to signal it's production
$f3->db->log(false);
}
언급URL : https://stackoverflow.com/questions/64395905/same-mariadb-inserts-much-more-slower-in-php-7-4-than-php-7-1-with-fat-free
'programing' 카테고리의 다른 글
| org.springframework.web.reactive.기능.지원되지 않는 MediaType 예외:내용 유형 'text/xml';charset=UTF-8' 바디 지원 안 됨유형 (0) | 2023.10.11 |
|---|---|
| CSS 스타일시트는 어떤 순서로 재정의됩니까? (0) | 2023.10.11 |
| 변수가 여러 문자열 값과 같지 않은지 확인하는 더 간단한 방법은? (0) | 2023.10.11 |
| AV 오디오 녹음기에서 오류가 발생함 (0) | 2023.10.11 |
| 이상한 Oracle XMLType.getClobVal() 결과가 발생했습니다. (0) | 2023.10.11 |