php 5.4序列化vs行列

时间:2015-01-21 07:39:06

标签: php mysql serialization

我需要在每篇文章中添加更多常见问题。将数组添加到数据库中哪种方式在PHP 5.4中有更好的性能?!

  • 使用PHP序列化添加到表中
  • 添加行列(为每个常见问题添加行)

1 个答案:

答案 0 :(得分:0)

在某些情况下应该进行序列化。现在我建议你为每个条目使用一行。

遵循数据库原子性原则,您必须为每个数据节点创建一个条目。强烈建议避免将数据汇编放入一个DB条目中。该原则假设保存到DB的每个节点都太小,并且大多数可能/不应该被分成更多的语义段。序列化将太多的数据节点放入一个序列化(类型=字符串)节点,并强制它进入DB(我强调它强调它违反了DB的数据原子性)。

在这里阅读更多相关信息:

http://en.wikipedia.org/wiki/Atomicity_%28database_systems%29

假设以下情形:

例如,您将" name& lastname& mobile"进入一个条目的一列。使用它时,使用explode("&", $data)来爆炸它们。这不是一个好习惯,你最好避免使用它。对于这种情况,您应该将$name$lastname$mobile分别放入各自的列中(对于每个条目)。

现在,在某些情况下,关于服务器,速度和项目规模,您可以使用序列化。另外,WordPress大量使用序列化。但Wordpress也有许多其他可怕的做法。

在企业级静态重要应用程序中,他们不会将这种结构用于一个表:

Table users:

id name lastname mobile

他们宁愿将上述单表结构分成四个表:

users:
id created_at updated_at

emails:
 id email user_id

names:
id name user_id

mobiles:
id mobile user_id

例如,使用上述结构,您可以追踪用户以方便的方式更改了他的姓名,手机或姓氏的数量。我举了这个例子来说明节省多少数据库可以远远超出定期完成的序列化。