mysql - 大型结果集的数据传输缓慢

标签 mysql performance transfer

我有一个大的 MySQL 表,有适当的索引等。我从远程机器运行一个简单的 select * 查询,我希望有一个大的结果集。

我的问题是,当我运行查询时,结果集返回的最大数据传输速度约为 300 KB/秒。 我创建了相同的表,并在 SQLServer Express 2008 R2 上运行相同的查询,结果以 2MBytes/秒(我的行限制)的传输速度返回。

服务器机器是 Windows Server 2008 R2 x64,四核,4GB 内存,MySQL 版本是 5.6.2 m5 64 位。我尝试在通信协议(protocol)中禁用压缩,但结果是一样的。

有人知道为什么会这样吗?

--西奥多

最佳答案

您可能会将苹果与橙子进行比较。

我会在 MySQL 服务器上运行 SELECT *,看看在没有网络额外限制的情况下,在本地服务器上检索数据的数据速率是多少。

如果这也很慢——那么这不是网络的问题。

当 MySQL 安装程序运行时,它会询问设置 MySQL 的人 MySQL 将在硬件上扮演什么角色——即开发服务器、共享服务器、专用服务器。

所有这些的区别在于 MySQL 将寻求在服务器上消耗多少内存。

最慢的设置是 Development(使用最少的内存),最快的设置是 Dedicated(尝试使用大量内存)。您可以修改 my.ini 文件以更改 MySQL 将为自己分配多少内存,和/或谷歌“my.ini 内存”以获取更详细的说明。

MySQL 正在使用(或未使用,视情况而定)的内存会对性能产生巨大影响。

首先,检查MySQL服务器本地检索数据的速度是多少。如果它很慢,网络不是问题——检查 MySQL 的内存使用情况——最好尽可能多地给它。当然,如果它很快,那么要么是网络和/或某些数据库中间件(ODBC?),要么是用于显示数据的工具——很慢...

还有一件事——尝试 SELECT * TWICE... 为什么?第二次应该缓存部分或全部结果(同样,取决于内存)...第二次应该更快...

此外,不要忘记在更改 my.ini 文件时重新启动 MySQL(并在进行任何更改之前创建备份...)

关于mysql - 大型结果集的数据传输缓慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6870860/

相关文章:

mysql - 如何使用 PHP Mysql rest api 创建 Flutter 聊天应用程序?

php - 在数据库中存储图像的 URL (PHP/MySql)

java - 性能方面,Guava 库有多好?

java - 如何使用 Spring Data Redis 和本地 Redis 服务器查找性能瓶颈

asp.net-mvc - 在 ASP.NET MVC 中,返回 RedirectToAction 时保留 URL

java - 在java中将时间插入mysql数据库

php - 如何将sql数据放入php表中

python - 重复 numpy 数组中的最后一列

iphone - 将事件传输到父 View (Titanium Studio、iPhone)

c++ - 如何在visual studio中运行linux下编写的程序