Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL巨大的表,通过迁移到NoSQL提高性能?_Mysql_Mongodb_Database Design_Relational Database_Nosql - Fatal编程技术网

MySQL巨大的表,通过迁移到NoSQL提高性能?

MySQL巨大的表,通过迁移到NoSQL提高性能?,mysql,mongodb,database-design,relational-database,nosql,Mysql,Mongodb,Database Design,Relational Database,Nosql,在MySQL数据库中,我们很少有非常大的表(3个表,每个表2~5GB)。我们正在运行物流应用程序,其中我们将路线、时间表、容量、位置、价格规则等实体组合在一起。。这些巨大的表包含来自上述实体的“连接”数据 我们必须拥有这些表,因为在运行时执行连接会完全降低性能。我们有索引;),缓存机制、高效的预处理语句、适当的事务管理设置,但性能不足(~数千名客户、~数百名或VIP客户) 我们的客户主要进行99%的只读操作,如搜索连接、日程安排、定价,然后有时进行1-2%的更新/插入操作,如预订一些旅程、容量等

在MySQL数据库中,我们很少有非常大的表(3个表,每个表2~5GB)。我们正在运行物流应用程序,其中我们将路线、时间表、容量、位置、价格规则等实体组合在一起。。这些巨大的表包含来自上述实体的“连接”数据

我们必须拥有这些表,因为在运行时执行连接会完全降低性能。我们有索引;),缓存机制、高效的预处理语句、适当的事务管理设置,但性能不足(~数千名客户、~数百名或VIP客户)

我们的客户主要进行99%的只读操作,如搜索连接、日程安排、定价,然后有时进行1-2%的更新/插入操作,如预订一些旅程、容量等

我们的想法是使用一些非sql数据库(可能是MongoDB)作为第二个数据库,在这里我们将把所有预生成的只读数据放入一些键值或树结构中。我们相信性能会更好,这个解决方案有哪些缺点?您是否有从事此类工作的个人经验


我们计划制作快速原型,但没有人真正拥有NoSQL的经验。

你们所有人都应该熟悉memcache的k-v结构,对吗? 站在您的团队中,NoSQL可以被认为是一个带有存储的memcache。 您可以使用memcache将数据重新构造为NoSQL

然后你会发现一切都变得容易了


总之,忽略高级功能,开始第一步。

所有人都应该熟悉memcache的k-v结构,对吗? 站在您的团队中,NoSQL可以被认为是一个带有存储的memcache。 您可以使用memcache将数据重新构造为NoSQL

然后你会发现一切都变得容易了


总之,忽略高级功能,开始第一步。

当您的数据模型中有大量关联数据时,MongoDB肯定不是正确的选择,因为它不支持关联。您对数据模型的介绍不多,但当您能够以一种大多数数据嵌入其他实体而不是存储在单独集合中的方式对其进行转换时,MongoDB就可以为您工作了。由于分片和副本集,它的扩展性非常好,特别是对于写访问


<>或者你考虑用MycChank缓存你的三个大表吗?3 x 5 GB=15 GB-服务器在内存中保存的空间不多。

当您的数据模型中有大量关联数据时,MongoDB肯定不是正确的选择,因为它不支持关联。您对数据模型的介绍不多,但当您能够以一种大多数数据嵌入其他实体而不是存储在单独集合中的方式对其进行转换时,MongoDB就可以为您工作了。由于分片和副本集,它的扩展性非常好,特别是对于写访问


<>或者你考虑用MycChank缓存你的三个大表吗?3 x 5 GB=15 GB-对于服务器来说,存储在内存中的容量不多。

您有多少行;可能是因为您存储了大量数据,所以数据库的大小很大;但不同的是,这两条路是不同的。您是否已经在合并表上运行以查看查询性能?对于只读表,最好添加索引(甚至组合索引)以加快查询速度。读/写表上的大量索引降低了写性能,但在只读表上,它们提供了良好的性能优势。一旦你有了这一点,那么评估其他解决方案就更容易了。在这些巨大的表中,行数大约为8~19百万。我们确定了造成最大痛苦的前20个查询,并对其中一些进行了优化。您是否消除了硬件瓶颈?请注意,现在2-5G是一个非常小的表。当您在一个表中接近一个TB时,我们在云中运行的是“大的”,但在我们为更大/更好的DB存储筹集资金之前,我们希望研究其他优化方法。我们热衷于尝试新技术,这就是为什么我们不考虑SQL;可能是因为您存储了大量数据,所以数据库的大小很大;但不同的是,这两条路是不同的。您是否已经在合并表上运行以查看查询性能?对于只读表,最好添加索引(甚至组合索引)以加快查询速度。读/写表上的大量索引降低了写性能,但在只读表上,它们提供了良好的性能优势。一旦你有了这一点,那么评估其他解决方案就更容易了。在这些巨大的表中,行数大约为8~19百万。我们确定了造成最大痛苦的前20个查询,并对其中一些进行了优化。您是否消除了硬件瓶颈?请注意,现在2-5G是一个非常小的表。当您在一个表中接近一个TB时,我们在云中运行的是“大的”,但在我们为更大/更好的DB存储筹集资金之前,我们希望研究其他优化方法。我们热衷于尝试新技术,这就是为什么我们不考虑使用SQL。