your programing

PHP-MySQL 또는 MySQLi에서 가장 빠른 것은 무엇입니까?

lovepro 2020. 12. 29. 08:08
반응형

PHP-MySQL 또는 MySQLi에서 가장 빠른 것은 무엇입니까?


이 이분법에 대해 직접 경험 한 사람이 있는지 알고 싶습니다. 몇몇 블로그에서는 mysql 확장이 mysqli보다 빠르다고 말합니다. 이것이 사실입니까?

그리고 저는 속도에 대해서만 묻습니다. mysqli에는 이전 확장에는없는 기능이 있습니다.


MySQL 확장은 내가보고 한 대부분의 벤치 마크에서 MySQLi보다 약간 빠릅니다. 그러나 그 차이가 너무 작기 때문에 이것이 둘 사이를 결정하는 기준이 될 수 없습니다.

다른 요인은 mysql과 mysqli의 성능 차이를 크게 만듭니다. mod_php 또는 FastCGI를 사용하거나 APC와 같은 바이트 코드 캐시를 사용하거나 데이터 캐싱을 신중하게 사용하여 데이터베이스 적중을 줄이는 것이 MySQL 확장을 선택하는 것보다 PHP 스크립트의 전반적인 성능에 훨씬 더 유리합니다.

한 푼도 현명하고 어리석게 굴지 마십시오! :-)


"때에 따라 다르지."

예를 들어, PHP MySQL vs MySQLi 데이터베이스 액세스 지표 및 후속 주석은 두 가지 방식으로 인수를 지적합니다.

성숙한 데이터베이스와 코드베이스가 있다면 몇 가지 테스트를 수행하고 시스템에서 무엇이 작동하는지 확인하십시오. 그렇지 않은 경우 조기 최적화에 대해 걱정하지 마십시오.


http://php.net/manual/en/mysqlinfo.api.choosing.php 참조

세 가지 확장의 전체 성능은 거의 동일한 것으로 간주됩니다. 확장 기능의 성능은 PHP 웹 요청의 총 실행 시간의 일부에 불과합니다. 종종 영향은 0.1 %만큼 낮습니다.


ceejayoz에 의해 링크 된 벤치 마크에 대한 모든 Google 결과에 따르면 모든 벤치 마크 테스트에서 MySQL이 MySQLi보다 약간 더 빠르다고합니다. 자세한 내용은 결과를 읽는 것이 좋지만 질문에 직접 답변하고 ceejayoz의 답변을 올리는 글을 게시 할 것이라고 생각했습니다.


PHP 문서에는 mysql, mysqli 및 PDO 가 잘 비교되어 있습니다. 나는 당신이 속도에 대해서만 물어 본 것을 알고 있지만 다른 사람들은 이것이 유용하다고 생각할 것입니다. 옵션 간의 기능 차이에 대해 설명합니다.


아마도 이것이 올바른 선택을하는 이유가 될 수 있습니다. :: The Plot to Kill PHP MySQL Extension

"예, 당신은 그것을 올바르게 읽었습니다. 최근에 Phillip Olson은 PHP 내부 메일 링리스트에 향후 PHP 버전에서 원래의 PHP MySQL 확장을 죽이는 제안을 보냈습니다."


PHP 프로그래밍 언어와 관련하여 MySQL은 이전 데이터베이스 드라이버이고 MySQLi는 향상된 드라이버입니다. MySQLi는 MySQL 5의 새로운 기능을 활용합니다.

php.net 사이트에서 가져온 MySQLi의 기능 :

  • 객체 지향 인터페이스
  • 준비된 진술에 대한 지원
  • 다중 문 지원
  • 거래 지원
  • 향상된 디버깅 기능
  • 임베디드 서버 지원

밀리 초가 중요하지 않는 한 걱정하지 마십시오. 확실히 mysqli에서 제공하는 추가 기능이 필요하지 않다면 시도되고 테스트 된 mysql을 고수하십시오.


<?php
$start = microtime();
$c = new mysqli('localhost', 'username', 'userpass', 'username_dbname');
$c -> select_db('username_dbname');


$q = $c -> query("SELECT * FROM example");

while ($r = $q -> fetch_array(MYSQLI_ASSOC))
  {
  echo $r['col1'] . "<br/>\n";
  }

$me = $c -> query("SELECT col1 FROM example WHERE id='11'") -> fetch_array(MYSQLI_ASSOC);

echo $me['col1'];
echo (microtime() - $start);
?>

mysqli oop을 사용할 때이 스크립트를 mysql 또는 mysqli 프로 시저 스타일과 함께 사용하면 속도가 약간 증가하는 이유는 무엇입니까? 위의 스크립트를 테스트 할 때 다른 2를 사용할 때보 다 지속적으로 .0009 초를 더 얻었습니다. mysql 또는 mysqli 절차를 사용할 때 각기 다른 스타일로 스크립트를 20x로드했고 둘은 항상 .001 이상이었습니다. 위의 스크립트를 20x로드하면 .001 5x 미만이됩니다.


MySQLiMySQL에 비해 두 가지 기본적인 장점이 있습니다 . 준비된 명령문은 SQL 주입 공격을 피할 수있는 좋은 방법입니다. 두 번째로 MySQL (또는 mariaDB)은 준비된 명령문을 최적화하기 위해 최선을 다할 것이며 따라서 속도 최적화의 가능성이 있습니다. 데이터베이스를 행복하게 만드는 속도 증가는 MySQL과 MySQLi의 작은 차이를 크게 초과 할 것입니다.

명령문을 입력 SELECT * FROM users WHERE ID=$user_id하는 경우 데이터베이스가이를 각각의 새 값이있는 고유 한 명령문으로 취급하는 것처럼 직접 조작합니다 $user_id. 그러나 준비된 명령문 SELECT * FROM users WHERE ID=?은 데이터베이스에 의해 수행되는 최적화 / 캐싱의 가능성이 훨씬 더 높습니다.

그러나 MySQL이 이제 공식적으로 사용되지 않기 때문에 비교는 상당히 논쟁의 여지가 있습니다 . 말의 입에서 :

PHP 5.5.x에서 더 이상 사용되지 않는 기능

ext / mysql 지원 중단

원래 MySQL 확장은 이제 더 이상 사용되지 않으며 E_DEPRECATED데이터베이스에 연결할 때 오류 가 발생 합니다. 대신 MySQLi 또는 PDO_MySQL 확장을 사용하십시오 .

참조 URL : https://stackoverflow.com/questions/171400/which-is-fastest-in-php-mysql-or-mysqli

반응형