mysql 分片集群架构
你们中有些人可能想知道什么是分片? 如果您不了解此概念,请阅读链接http://en.wikipedia.org/wiki/Shard_(database_architecture) 。 当您要处理大数据集吞吐量而传统的单个数据集群组(Master-Slave,Master-Master和Slave-Slave等)设置无法从这种情况中幸存下来时,此功能非常有用。 它的概念非常简单,您可能事先知道了“分而治之”。
它具有非常不同的字符,与Partition技术(您可能从某些数据库提供者那里了解到)完全不同,因为Partition是特定于数据库层的技术,但是分片可以遍及您可以接触的所有层。
例如,您有一个仅包含一页的Web在线产品,并且该页需要从一张表中加载数据。 并假设您是否有10亿个数据持久存在于单个oracle / my-sql / ms-sql服务器中的该表中,并且再次查询该表,则在负载1000 TPS的情况下平均需要花费2秒的时间。 你可能会说还不错。 但是请记住,只有一种成熟产品的数据库成本才需要考虑数据转换,网络传输(不要混淆,在这里我提到与最终用户的应用程序相关),页面渲染等。最终客户可能平均每次需要为该页面操作支付5或10秒。 您的利益相关者希望您为该问题提供解决方案。
您可能会首先提出其他解决方案,但是在这里我可以给您一个非常特别的解决方案。 如果一张有10亿个数据的表需要2秒钟,那么我们如何将该表分为5个部分,每个部分仅容纳2亿个数据。 这可能与您可能想到的一个数学问题有关,可能是400毫秒,但结果可能会让您感到惊讶<< 400毫秒(为什么两个以下符号?)。 因为数据库具有以下特征:主数据文件变得更小,索引文件变得更小等等,所以这意味着I / O轮次已大大减