Php 动态表创建

Php 动态表创建,php,mysql,sql,database,Php,Mysql,Sql,Database,我有一个应用程序,用户可以使用有限的前端界面创建自己的Mysql数据库表。前端处理安全性、名称复制等 我读过很多类似的SO答案,但大多数答案都有类似的解决方案,比如“不要创建动态表,只创建几个表和外键来将它们关联在一起”。但这并不是一个真正的选项,因为每个用户都在创建自己的表,而这些表独立于其他用户的表。一个用户可以有多个与其关联的表 所以我的问题是:如果我有很多表(比如说几百万),那么从性能和维护的角度来看,最好将所有表都放在一个数据库中,还是为每个用户创建一个数据库,然后将用户的表放在该数据

我有一个应用程序,用户可以使用有限的前端界面创建自己的Mysql数据库表。前端处理安全性、名称复制等

我读过很多类似的SO答案,但大多数答案都有类似的解决方案,比如“不要创建动态表,只创建几个表和外键来将它们关联在一起”。但这并不是一个真正的选项,因为每个用户都在创建自己的表,而这些表独立于其他用户的表。一个用户可以有多个与其关联的表

所以我的问题是:如果我有很多表(比如说几百万),那么从性能和维护的角度来看,最好将所有表都放在一个数据库中,还是为每个用户创建一个数据库,然后将用户的表放在该数据库中?我和一位朋友谈过这个问题,他提到复制和扩展大量数据库比复制大量表更容易


另外,还有一个附带问题:现有的ORM有能力这样做吗?创建动态数据库/表?目前我使用的是直接的SQL,但最好有一个已经构建/测试过的库,但我知道我有一种常见的问题类型。

如果使用myisam存储引擎,您还必须研究底层引擎的性能

在没有测试的情况下,我倾向于将um目录用于db。要搜索的目录条目(比如)是100万,而表条目是200万。这是假设MySQL仅使用文件szstem的API访问dbs/表

对于myisam,表/数据库数量的限制仅取决于文件系统


从逻辑的角度(考虑更简单的应用程序维护)和命名空间管理,我也倾向于每个用户使用一个dir。

我可以这样说->“或者为每个用户创建一个数据库”-这是一个非常糟糕的主意。想想维护等等,你最终会得到糟糕的性能。mysql查询缓存被设置为表的键。如果你有一百万个表,即使其中一小部分是“活动的”,你也会不断地破坏你的缓存。Marc B,那么如果有一百万个数据库,每个数据库有一个或两个表,会更好吗?这还会影响缓存吗?