Mysql 使用Amazon RDS构建我自己的数据库扩展解决方案
我决定在我的ASP.NET应用程序中使用Amazon RDS MySQL。为了在将来支持较大的数据库容量,我决定使用分片,但采用简单的实现。我将在单个数据库上工作,当Id达到超过10000000的增量Id时,我将使用第二个数据库,依此类推 每个数据库将具有相同的数据库模式。现在,我将创建一个变量,用于保存我正在并行处理的AmazonRDS服务器的数量。我将使用UNIONALL编写查询。这些查询将动态创建,并将服务器数量考虑在内,以创建一个UNIONALL查询,该查询利用整个服务器来连接数据。然后我将再次查询该数据 我将仅对希望变大的表使用此技术。应用程序将根据我为每台服务器设置的最大id(即服务器1,最多1000000)知道向哪台服务器发送删除和更新sql查询。对于insert语句,我当然会将数据插入最后一台服务器。我不需要担心复制、恢复和备份功能,Amazon RDS会解决这一问题 我的问题是:Mysql 使用Amazon RDS构建我自己的数据库扩展解决方案,mysql,amazon-web-services,scalability,sharding,amazon-rds,Mysql,Amazon Web Services,Scalability,Sharding,Amazon Rds,我决定在我的ASP.NET应用程序中使用Amazon RDS MySQL。为了在将来支持较大的数据库容量,我决定使用分片,但采用简单的实现。我将在单个数据库上工作,当Id达到超过10000000的增量Id时,我将使用第二个数据库,依此类推 每个数据库将具有相同的数据库模式。现在,我将创建一个变量,用于保存我正在并行处理的AmazonRDS服务器的数量。我将使用UNIONALL编写查询。这些查询将动态创建,并将服务器数量考虑在内,以创建一个UNIONALL查询,该查询利用整个服务器来连接数据。然后
谢谢100万张唱片不算什么。您应该根据索引在每台服务器的密钥缓存中所占的比例来决定分片。请您详细解释一下索引在每台服务器的密钥缓存中所占的比例。考虑到每行X字节的数据,我如何计算该值?建议的大小是多少100KB的1M行大约是470MB,所以可以肯定的是,每台服务器可以有更多。当索引无法再放入内存时,查询将强制db引擎访问磁盘以检索索引的溢出部分。击中磁盘的速度很慢。这时,您开始对数据库进行分片,以使索引足够小,以便可以保存在内存缓存中。数据的大小是不相关的,索引才是最重要的。此外,使用序列号作为切分键并不是最明智的切分策略,尤其是当您的应用程序是写密集型的,并且希望在多台机器之间分散负载时。为什么不使用类似于
id%num\u of\u db\u机器的东西
?这是一个非常特定于应用程序的问题tho(切分),因此在不了解应用程序逻辑的情况下,此处的任何响应都将非常通用。id%num\u of_db\u machine将为我提供insert命令也应该获得的服务器(%你是说modulu right?)。此外,通过使用更小的数据库(尽管amazon可以达到1TB),t将更快地备份和恢复每个DB实例的数据,以防特定服务器中的数据损坏。