平面文件与MySQL的非常简单的数据

时间:2012-01-30 21:06:55

标签: php mysql flat-file

从纯粹的性能角度来看,您认为存储简单数据(预定义消息)会更好。你会说打开一个文件句柄,json_decode是一个“主题”和一个“正文”,然后关闭文件或查询数据库(SELECT subjectbody FROM predefine WHERE id ='message1',假设id是主键)。我将只有5-10个预定义的消息,但我想假设有数百个用户同时使用此应用程序。

4 个答案:

答案 0 :(得分:4)

对于小文件,读取平面文件非常快......当您尝试搜索特定数据时,数据库的性能优势就会出现。如果您只是抓取特定文件(例如,基于文件名:msg_1.txtmsg_2.txt等),那么使用flatfile系统会更好。

也就是说,正如JB Nizet指出的那样,如果你只处理一些消息,请不要打扰...使用常量OR在PHP文件中创建一个可以include_once()编辑的数组当你需要定义时:

$msg = array(
  'msg1'=>array('sub'=>"subject",'body'=>"body Text"),
  'msg2'=>array('sub'=>"subject 2",'body'=>"body Text 2"),
  //...etc.
);

答案 1 :(得分:3)

如果消息是预定义且只读的,我只需将其(作为常量)硬编码到PHP源文件中。

如果确实发生了变化,请让数据库处理并发问题。按主键读取行非常快,特别是如果表中只有10行。这可能不是您的应用会遇到性能问题的地方。

答案 2 :(得分:1)

对于5-10条消息,平面文件效率更高。 MySQL是一个单独的进程,因此简单的跨进程通信将导致更多的CPU负载,然后解析一个小文件。在100条消息中,我会开始考虑一个更复杂的系统,就像一个简单的索引文件。即便如此,SQL也是一种矫枉过正。只有当您处于10000或100000条消息时,您才会开始看到数据库带来的好处。

答案 3 :(得分:0)

像丹尼尔说的那样,如果你已经在使用数据库,那么就把它们扔进那里。如果您的应用程序是一个守护程序进程,请在重新启动时从数据库加载它们并将它们缓存在内存中,这样可以保证最佳性能。