gpt4 book ai didi

php - Amazon Webservice 上的 mySQL RDS 实例性能

转载 作者:行者123 更新时间:2023-11-29 19:06:00 27 4
gpt4 key购买 nike

我是亚马逊 Web 服务的新手,并且已经设置了 mySQL RDS 实例。

我当前正在使用 db.t2.micro 服务器,并设置了一个循环,将 1000 条记录插入到数据库中。从代码中我们可以看出,此操作大约需要 16 秒才能完成。

如果我的目标是降低速度以在 1 秒内完成 1000 次插入,那么我需要考虑更改哪些规范才能实现这一目标?

<?php

$time = time();

// connection crednetials

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}

$i = 0;
while($i < 1000){
$sql = "INSERT INTO test (value)
VALUES ('$i')";

if ($conn->query($sql) === TRUE) {
// echo "New record created successfully";
} else {
echo "Error: " . $sql . "<br>" . $conn->error;
}

$i++;
}
$conn->close();

$time2 = time();

$diff = $time2 - $time;

echo "Difference: ".$diff;
?>

谢谢!

最佳答案

如果您使用试用版 t2.micro 并预留 20GB 存储空间,您将面临一些问题

  1. 最大 IOPS = 20GB x 3 = 60 IOPS,对于 1k 条记录,1000/60 = 16.6 秒所以你想获得1000 iops,你可以利用gp2每GB 3 IOPS的优势,分配330GB = 333 x 3 = 999 IOPS。此后,您将面临数据传输限制。不过,您可以编写并调用MYSQL存储过程来模拟RDS中的原始插入以证明IO性能。

  2. 即使是简单的记录插入,Mysql 仍然会使用一些 CPU。 t2.* 实例类型只是为您提供仅持续 30 分钟的连续突发处理,之后,它将限制 CPU 的使用率低于 25%。如果您有那么多交易,请尝试使用 c3/c4/m3/m4 等。

虽然AWS文档关于Storage for Amazon RDS ,其他因素可能会起作用,例如如果您的 Web 服务器和 RDS 不在同一位置,则它们之间存在网络延迟。

因此,对 RDS 进行基准测试的最佳方法是将基准存储过程放入 MYSQL RDS 中并按此 question answer 所示调用它们。网络延迟为零,可满足您的原始基准测试需求。

这是从提到的问题复制的代码

DELIMITER $$
CREATE PROCEDURE InsertRand(IN NumRows INT, IN MinVal INT, IN MaxVal INT)
BEGIN
DECLARE i INT;
SET i = 1;
START TRANSACTION;
WHILE i <= NumRows DO
INSERT INTO rand_numbers VALUES (MinVal + CEIL(RAND() * (MaxVal - MinVal)));
SET i = i + 1;
END WHILE;
COMMIT;
END$$
DELIMITER ;

CALL InsertRand(1111, 2222, 5555);

(更新):

基于事务的应用程序无法进行批量插入。使用各种 MySQL Insert Performance technique 进行优化非常重要。不幸的是,诸如LOAD DATA INFILE之类的技术不适用于RDS。

关于php - Amazon Webservice 上的 mySQL RDS 实例性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43500763/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com