簡體   English   中英

Eloquent 使用遠程時非常慢 MySQL

[英]Eloquent Very slow when using remote MySQL

我最近不得不將我的數據庫轉移到遠程服務器。

我使用 Postman 連接到在 localhost 上運行的 PHP 以發出相同的請求。 這是結果,

Localhost 和 Eloquent 上的 MySQL:~30ms

遠程服務器上的 MySQL 和 Eloquent:~2.7 秒

Localhost 和 PHP 上的 MySQL:~10ms

遠程服務器上的 MySQL 和 PHP:~850ms

從我的計算機到遠程服務器 ip 的平均 ping 時間約為 150 毫秒。

這是我使用的 PHP 腳本,

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);

if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}

$sql = "select * from `online` where `online`.`id` = 1 limit 1";
$result = $conn->query($sql);

var_dump($result);

對於 eloquent,我只使用了Online::find(1)

我還沒有嘗試在服務器上運行 eloquent,但這正常嗎? 如果我要在不同的服務器上使用遠程 mysql 數據庫,我應該避免使用 eloquent 嗎?

編輯:

我正在更改一些值,當我從 eloquent 配置中刪除字符集和排序規則值時,響應時間提高到 1.7 秒,快了 1 秒。

'charset' => 'utf8mb4',
'collation' => 'utf8mb4_unicode_ci',

Eloquent VS MySQLi 原生 RAW 執行

Eloquent ORMNative MySQLi Execution要慢,因為它有很多內置功能。 但是eloquent 將使您的代碼簡潔明了。 並提供更好的security

本地主機VS遠程主機

當我們談論local server時,性能取決於您的local environment 但是當您使用Remote Host時,性能會因為以下原因而改變。

  1. 網絡連通性。
  2. 遠程主機的位置。
  3. 遠程主機的性能。

最佳實踐/架構

將應用程序部署到生產環境時,通常我們不會將數據庫和應用程序保存在同一台服務器上。 在生產中,專家會做以下事情來提高數據庫性能。

  1. 使用數據庫復制(跨區域)。
  2. 索引。
  3. 使用緩存。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM