我正在为我运行的网站的用户设置一个系统来托管WordPress博客。现在,事情在一个数据库中运行良好,并且不同的博客使用自己的前置表(user1_posts
,user_posts
等)运行。
尽管到目前为止这种方法仍然有效,但感觉有点混乱。如果这个数据库有4000个表,那会是个问题吗?将它分成400个数据库会更好吗? (或者我错过了一种更聪明的方法吗?)
谢谢!
答案 0 :(得分:6)
答案 1 :(得分:3)
当您在列名,表名或数据库名称中引入数字时,您很可能做错了。
虽然此规则有例外,但它们罕见。请注意。
答案 2 :(得分:2)
在表格中添加customer_id列并进行垂直
答案 3 :(得分:1)
您正在做的主要是为他们提供一个单独的数据库,因为每个用户的数据将独立存在。我可能会建议将它们分成自己的数据库。
如果你有一张表,所有用户都在共享他们的数据,那么它变得棘手。那时您需要考虑是否要将数据保存在一个地方或单独
答案 4 :(得分:1)
这取决于您使用的引擎。如果您使用的是MyISAM,如果您的表格多于my.cnf中设置的表格缓存大小,那么性能将会非常糟糕。
将表格缓存设置为>表的总数是至关重要的,否则它将不得不保持打开和关闭表,这会破坏密钥缓冲区中的索引缓存,这意味着大量不必要的IO。
如果您使用多个数据库或相同的数据库没有任何区别,MyISAM的表缓存具有安全的效果。
对于其他引擎可能会发生同样的事情,但我认为效果不太明显(例如,关闭表时InnoDB不会丢失其缓存,但它仍然不是免费的)
答案 5 :(得分:0)
根据表的大小和数据库软件的不同,您可能需要考虑分区。
如果表格不大,并且不要求最终安全性,那么拥有customer_id列将会有效。
架构中的4000个表格较大,可能会也可能不会导致性能问题 - 具体取决于数据库。
保持400个数据库可能会成为一个大问题。仔细考虑日常维护 - 备份,升级等,以及在拥有400个数据库时如何执行这些操作。我个人会避开这条路。也许是一条中间道路?每50个客户的数据库?
答案 6 :(得分:0)
4000张桌子有点大。
如果您计划将表拆分到不同的数据库中......您可以查看Meta数据库的安排。一个Meta DB位于包含不同数据库的连接详细信息的所有不同数据库中......以及常见信息。这样你就可以轻松扩展..并且使用现有的运行系统..你只需要一个Meta DB上的包装器就可以支持你正在运行的应用......
我不确定这会有多大帮助!!!!