什么是最佳做法?为每个用户使用不同的数据库或使用与userid coloumn相同的数据库

时间:2013-09-18 05:10:55

标签: php mysql database

最佳做法是什么?为每个用户使用不同的数据库或使用与userid coloumn相同的数据库。

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

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

现在的困惑是“对每个用户使用不同的数据库或使用与userid coloumn相同的数据库的最佳做法是什么。”

2 个答案:

答案 0 :(得分:2)

使用一个数据库。

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

如果您担心可扩展性,则需要阅读database connection poolsdatabase indexes以及非常大的数据集database sharding

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

答案 1 :(得分:0)

仅使用一个数据库,

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

  1. 用户表的分片。 MySQL sharding approaches?
  2. Mysql分区(http://dev.mysql.com/doc/refman/5.1/en/partitioning.html
  3. 使用主从配置(在主设备上插入/更新/删除,在从设备上选择)
  4. mysql上的缓存层,如(Redis / Memcache)
  5. 使用where子句
  6. 中的主键优化表结构
  7. 在表格结构上加上正确的索引。