【问题标题】:php 5.4 serialize vs row columnsphp 5.4 序列化 vs 行列
【发布时间】:2015-01-21 07:39:05
【问题描述】:

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

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

【问题讨论】:

  • 另外,Add withGoogle
  • 另外,请谷歌进行数据库规范化

标签: php mysql serialization


【解决方案1】:

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

遵循数据库原子性原则,每个数据节点都必须有一个条目。强烈建议避免将数据汇编放入一个 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

例如,使用上述结构,您可以方便地跟踪用户更改了他的姓名、手机或姓氏的次数。我举了这个例子来说明有多少 DB 节省与定期完成的序列化相去甚远。

【讨论】:

    猜你喜欢
    • 2018-11-10
    • 1970-01-01
    • 2016-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-21
    • 2014-12-30
    相关资源
    最近更新 更多