【问题标题】:AWS RDS MySQL performanceAWS RDS MySQL 性能
【发布时间】:2020-05-31 10:36:02
【问题描述】:

我在 AWS RDS 上运行 MySQL 8,我有一个 InnoDB 类型的表,里面有 260,000 行,没有特别大的数据。

我的开发服务器配备 1GB RAM、1vCPU,而我的 AWS RDS 服务器是 t3.small。

SELECT Count 操作耗时太长(平均 33 秒)并且我的 Laravel 项目中的数据表超时,可能是什么问题?

select count('special_cargo_id') from special_cargos

33 秒

【问题讨论】:

    标签: mysql database amazon-web-services amazon-rds


    【解决方案1】:

    special_cargo_id 是你的 PK,它是什么类型,是否适合 innodb_buffer_pool_size?

    运行:

    select count(1) from special_cargos;
    

    几次。第一次之后它运行得很快吗?如果是这样,那么它有时变慢的原因是因为您内存不足,并且其他数据将该表上的 PK 推到了 innodb_buffer_pool 之外。如果它总是很慢,那么 PK 很可能永远无法放入缓冲池。

    【讨论】:

    • 当我运行这段代码时,在我进行查询时它会在 22 秒内给出结果,我在哪里可以查看 innodb 缓冲池的大小?
    • SHOW GLOBAL VARIABLES LIKE 'innodb_buffer_pool_size';
    • 导致 2147483648,总表大小 1,95GB
    • 单次查询完成时间为0.05秒,多查询出现问题,是否与索引设置有关?
    • 这在具有 1GB RAM 的服务器上毫无意义。在具有 1GB RAM 的服务器中,它可能应该是大约 500MB。不同的查询依赖于不同的索引。
    【解决方案2】:

    如果您尝试调试数据库的性能,RDS 有一个很好的内置工具。

    使用RDS Performance Insights,您应该能够确定瓶颈在哪里。

    【讨论】:

    • 我选择数据库并进入修改后的页面,但没有可以启用性能洞察的设置
    猜你喜欢
    • 1970-01-01
    • 2017-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-10
    • 2020-06-07
    • 1970-01-01
    • 2022-10-13
    相关资源
    最近更新 更多