2010-01-19 45 views
0

我对数据库性能有一些疑问。我使用Sqlite,但我认为性能评论适用于所有关系数据库?数据库设计和性能

我有一个数据库,其中包含一个表,其中存储约200个变量的数据。我每秒钟向表格写入大约50个变量。一个写变量包含变量的ID,一个值和一个时间戳。 Readig很少完成,但需要尽可能快地按时间顺序获取每个变量的数据。当我做查询时,我总是需要获取1个变量的数据。

如何设计数据库,使读数尽可能快: 1.我制作了一个包含所有 变量的表格。该变量存储为 的ID。我索引表上的ID 和时间戳。不好的部分是 该索引使写缓慢(r)。 2.我为每个变量 制作200个表并索引时间戳。

我认为第二个解决方案是最高效的,但是为每个变量添加一个表似乎并不正确。有人可以给我一些建议吗?

谢谢

回答

1

如果您确实想使用数据库,请使用第一种方法,但请确保您将数据插入到单个事务中;基准测试表明它使写入速度更快。 您的搜索是否仅对变量名称/ ID和时间戳或变量名执行。索引时间戳可能不是必要的...

1

您确定您需要一个数据库吗?通过它的声音,一个平面文件对你来说可以工作得很好,而你听起来并不像你实际上需要任何数据库的任何陷印。只需为每个变量创建一个平面文件,并为每个变量保留句柄。尽可能多地通过标准缓冲IO写入它们。要阅读,只需打开一个文件并反序列化即可。

1

如果您正在使用关系数据库,我猜这些变量都是相关的?如果他们只是价值观,例如设置,那么也许文件或类似的东西可能会更好。如果你只需要查询一个变量的值,那么,如果你坚持使用数据库(这可能不是一件坏事!),那么你应该为每个变量创建一个表: id(unsigned int ,自动递增,主键) 时间戳(日期时间) 变量(不管它应该是)

不要在数据吝啬,只是因为“它可能需要在硬盘上更多的空间” - 这只会导致麻烦。