Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/253.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 最佳做法是什么?为每个用户使用不同的数据库,或使用具有userid column的相同数据库_Php_Mysql_Database - Fatal编程技术网

Php 最佳做法是什么?为每个用户使用不同的数据库,或使用具有userid column的相同数据库

Php 最佳做法是什么?为每个用户使用不同的数据库,或使用具有userid column的相同数据库,php,mysql,database,Php,Mysql,Database,最佳做法是什么?为每个用户使用不同的数据库,或者使用具有userid column的相同数据库 我正在研究mysql数据库和php。我对我的项目有点困惑 我的项目是基于用户的。如果用户已经注册,那么他可以在许多表上存储数据。 我创建了所有带有userid列的表,以查找特定用户的数据。 但现在我在想,如果表中有大量的行,那么我的项目获取记录的速度就会变慢 现在的困惑是“最好的做法是为每个用户使用不同的数据库,或者使用具有用户ID的同一个数据库。”使用一个数据库。 如果您有“大量行”,使用不同的数据

最佳做法是什么?为每个用户使用不同的数据库,或者使用具有userid column的相同数据库

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

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


现在的困惑是“最好的做法是为每个用户使用不同的数据库,或者使用具有用户ID的同一个数据库。”

使用一个数据库。

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

如果您担心可伸缩性,那么您需要仔细阅读,并且在非常大的数据集中

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

仅使用一个数据库

要进一步扩展它,您可以使用以下多种方法:-

  • 用户表的分片
  • Mysql分区()
  • 使用主-从配置(在主设备上插入/更新/删除,在从设备上选择)
  • 类似mysql的缓存层(Redis/Memcache)
  • 在where子句中使用主键优化表结构
  • 在表结构上放置正确的索引

  • “如果表有大量行”-“巨大”是什么?你能举个例子吗?不管怎么说,尼克似乎用下面的答案回答了这个问题。巨大意味着表格有数千行。