mysql - MySQL 的分片启发式算法是什么 - 每个表的记录数和每个实例的表数?

标签 mysql database-design scalability

为 ~10B 对象设计对象存储并使用 mySQL 存储元数据。我们知道我们需要分片,并且正在寻找通用的启发式方法来扩展。希望得到指点并了解你们都使用的粗略计算

最佳答案

您不知道需要分片。先找出来。

按优先顺序:

  • 更高效地使用单个服务器。
  • 进行功能分区(将应用的不同部分放在不同的服务器上)
  • 进行垂直分区(将不同的列分开)
  • 进行水平分区(即“分片”)

这是因为复杂性会影响您的应用程序。可以很容易地在一台服务器中拥有一个包含 10B 行的表并期望良好的性能;这在很大程度上取决于您的用例 - 行有多大以及您正在执行多少查询/更新。

好的设计永远是关键;良好的应用程序设计至少与良好的数据库设计同样重要。

不要假设。测试。

为您的性能实验室购买大量硬件。不要为生产购买任何产品(目前)。

关于mysql - MySQL 的分片启发式算法是什么 - 每个表的记录数和每个实例的表数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6145047/

相关文章:

mysql - 如何区分两个字母相似的ID

php - E/ Volley : [1376] BasicNetwork. 执行请求 : Unexpected response code 404 for http://192. 168.0.109/connectphp/GetRestaurantData.php?restype=cafe

php - 使用PHP Mysql登录后出现空白页面

database - 双时态 NoSQL 数据库是否有任何设计模式?

javascript - 如何使用 Rails 在开发模式下巧妙地缓存/过期 Assets 文件

mysql - 使用通配符搜索多对多关系,性能问题

php - 检查 PDO 是否存在某些内容的最佳方法是什么

ruby-on-rails - 在继承模型之上添加其他字段并公开所有父类(super class)和子类字段

database - 设计一个包含多种不同产品的数据库?

mysql - SQL 数据库列中的数组 - 或 - 一个键/值 noSQL 存储?