我正在从 linux/proc fs 读取几个文件,我必须将这些值插入到数据库中。我应该尽可能优化。那么什么更便宜:
i) 将 then 转换为 int,同时将 then 存储在内存中,以便稍后在构建 INSERT 语句时再次转换为 string
ii) 或将它们保留为字符串,只是清理值(删除“:”、空格等...)
iii) 我应该考虑什么来学习做出这个决定?
我已经在排队了,因为他们来的顺序对我来说不够好。
谢谢,
佩德罗
编辑 - 澄清
抱歉,我的场景如下:我正在测量 CPU、内存、网络、磁盘等...每 10 秒一次。我们正在开发我们的数据库系统,所以除了 INSERT 语句之外,我不能指望任何东西。
我对这个优化很感兴趣,因为解析数据的频率。它会被写入一次 - 数据写入后将不会更新。
最佳答案
您似乎正在执行一些归档事件[一次写入,最多可能读取一次](存储数据库以供以后很少/不经常使用),如果没有,您应该将优化重点放在基于如何读取(而不是写入)数据。
如果这是存档情况,也许将 BLOB(二进制大对象,[或类似概念])插入数据库会更有效。
添加:
显然,这将取决于您将如何读取数据。您只是稍后列出数据以供浏览,还是会有更复杂的基于基准值的提取查询。
例如,如果您稍后要执行以下操作:SELECT * from db.Log WHERE log.time > time1 and Max (Memory) < 5000
那么最好将每个数据保持其原始格式(整数中的 int,字符串中的字符串等),以便将主要数据处理留给 DB 服务器。
关于c++ - 什么东西便宜 : cast to int or Trim the strings in C++?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8124210/