通过某些服务处理大型 MySql 数据库

Handling Large MySql DB through some service

我们在组织中使用 MySql 数据库,而且表越来越大。 当查询很复杂并返回数百万条记录时,它会给我们的服务器带来沉重的负担并花费大量时间。

因此,我们决定使用一些可用的服务来处理这个问题。 请不要提供我们自己处理的解决方案。

我们可以免费使用来自Google、亚马逊等的任何服务

问题基本上就是问这里有哪些服务,以及 他们中最好的是什么。

因此,我们服务器上的负载变小了,数据开始快速传输。

提前致谢。

Google Cloud SQL FAQ 应该是一个很好的起始页,可以获取有关此服务的一些信息。

Cloud SQL 最重要的功能与它与来自 Google Cloud Platform 的其他产品(如 App Engine, Compute Engine and Data Store)的集成有关,以及由 Goggle 管理的最常见的管理和维护任务。

云 SQL 是云上 MySQL 的一个实例。 MySQL 实例的所有主要通用功能都将在云 SQL 实例中提供,例如

  • 标准MySQL
  • MySQL 有线协议
  • 与工具集成(例如:Workbench)
  • 日志(未满)
  • 语句(存储过程、触发器和视图)
  • InnoDB 和 MyISAM 存储引擎
  • Import/export数据

来自 Cloud SQL 的功能和资源是不同的:

  • 垂直缩放(R/W、增长磁盘 I/O、CPU 和内存)
  • 横向扩展(R,只读复制实例)
  • 数据库管理即服务(创建、调整大小、复制、备份)
  • App Engine 和 Compute Engine 实例之间的快速连接
  • 可从任何地方访问
  • 自动和计划备份以及时间点恢复
  • 加密的出站和入站流量。
  • 实例发生变化(磁盘、内存等),停机几秒。

有 7 种类型的 tiers(实例模板)具有不同的资源。

云 SQL 有 2 个计费选项:包和按使用。

  • 套餐:按实例(每日)类型(级别)划分的固定价格
  • 每次使用:按层级使用小时计算的固定价格 (此模型按小时四舍五入。1:40 小时四舍五入为 2:00)
  • 仅对出口网络流量计费(Google 云基础设施中的流量将不计费 exe:通过 App Engine 和 GCE 将不计费)。
  • 使用量的计费,而不是超额分配。
  • 磁盘计费I/O(每个层都有一组默认的 I/O 操作)。
  • 存储按 GB/h 存储收费。
  • 账单费用使用美国太平洋时间计算。

提示:如果每月使用 >= 450 小时,最好使用套餐计划。

无论如何,对于中小型项目(最多 500GB DB 和 10s-100s QPS),建议使用云 SQL,并且有 100 个独立于层的待处理连接的限制。

我会考虑使用 Amazon Aurora 而不是 MySQL。 Aurora 与 MySQL 兼容,因此您无需更改任何代码,甚至无需更改您正在使用的数据库驱动程序。它在重负载下表现优于 MySQL,尤其是在大量并发查询的情况下。

您可能还想研究使用 Amazon Redshift,尽管这需要对您的应用程序进行一些更改。根据您存储的数据类型和查询类型 运行,Redshift 有可能比 MySQL 快几个数量级。我是根据经验说的,因为我目前正致力于将一些大表从 MySQL 迁移到 Redshift,而且速度提升令人难以置信。

否则,您是否将缓存集成到您的系统中?明智地使用数据缓存确实可以减轻数据库的负担。我推荐 Redis 用于缓存目的。您可以使用我喜欢的 Amazon's ElastiCache service for that, or RedisLabs

将推动单个服务器达到其极限的数据传输到单个云实例上只会导致访问时间变慢。

购买一台配备更多 CPU、更多 RAM 和更多 HDD 的机器,然后将您的 SQL 转移到该机器上,直到您可以有效地实施 "Big Data" 解决方案,将您的数据拆分到多台机器上。

如果您的数据没有分散到多台机器上,使用在线 "cloud" 服务不会给您带来任何好处。您必须重新构建数据以利用多台机器,然后才能看到 AWS 或 GCE 带来的任何好处。

我无法告诉你有多少次人们认为只要将他们的东西从本地服务器转移到 AWS 或 GCE 上就会变得更快。当他们的应用程序或数据变慢时,他们总是感到失望,因为他们认为 AWS = 速度。但是 AWS = 容量,而不是速度。