0

最佳做法是什么?为每个用户使用不同的数据库或使用具有用户 ID 列的相同数据库。

我正在研究mysql数据库和php。我对我的项目有点困惑。

我的项目是基于用户的。如果用户已注册,则他可以将数据存储在许多表上。我已经创建了所有带有 userid 列的表来查找特定用户的数据。但是现在我正在考虑如果表有大量行,那么我的项目获取记录的速度会变慢。

现在的困惑是“最佳实践是为每个用户使用不同的数据库或使用具有用户 ID 列的相同数据库。”

4

2 回答 2

2

使用一个数据库。

如果您有“大量行”,使用不同的数据库将无助于可扩展性。获取数据库连接通常比简单查询慢得多,尤其是那些针对索引列(如主键和唯一键)运行的查询。(一个流行的网络主机认为查询连接的性能等效为 25:1)

如果您担心可伸缩性,则需要阅读数据库连接池数据库索引以及在超大型数据集中的数据库分片

我从未听说过每个用户使用不同的数据库。我听说为第三方客户托管数据的托管应用程序为每个客户使用不同的数据库,以保持数据完全独立(另一种方法,将所有客户的数据托管在一个数据库中,称为多租户)。

于 2013-09-18T05:13:41.013 回答
0

仅使用一个数据库,

为了进一步扩展它,您可以使用许多东西,例如:-

  1. 用户表的分片。MySQL分片方法?
  2. Mysql 分区(http://dev.mysql.com/doc/refman/5.1/en/partitioning.html
  3. 使用主从配置(在主设备上插入/更新/删除并在从设备上选择)
  4. mysql 上的缓存层,例如(Redis/Memcache)
  5. 优化表结构,在 where 子句中使用主键
  6. 在表结构上放置正确的索引。
于 2013-09-18T05:36:11.383 回答