繁体   English   中英

Amazon Webservice上的mySQL RDS实例性能

[英]mySQL RDS instance performance on Amazon Webservice

我是亚马逊网络服务的新手,并且已经设置了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;
?>

谢谢!

我推荐几种方法:

1-您可以分批插入吗? 执行有开销,因此,如果一次可以执行50、100,则将大大减少开销,从而减少运行时间。

2-如果这样做没有帮助,我会考虑增加服务器的IOP。

但我强烈建议使用(1)作为解决方案。

如果您使用试用版t2.micro并预留20GB的存储空间,则会遇到一些问题

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

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

尽管AWS文档中有关于Amazon RDS的存储的信息 ,但其他因素可能会起作用,例如,如果Web服务器和RDS不在同一个地方,则它们之间的网络延迟。

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

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

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技术进行优化很重要。 不幸的是,诸如LOAD DATA INFILE技术不适用于RDS。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM