我试图使一个程序,将ping一些服务器和服务,无论他们是否在线,并将其写入数据库。所以在制作时,我只是想知道哪一种是最好的制作方法,我很可能需要这三个项目,但有时我不需要。
以下是我当前的模式:
CREATE TABLE webservice_historylog (
id_webServiceConnection BIGINT PRIMARY KEY AUTO_INCREMENT,
id_Location varchar,
datetime_Connect datetime,
response_TimeMs int,
status_Code varchar(5),
status_Message varchar(255)
);
CREATE TABLE internet_historylog (
id_internetConnection BIGINT PRIMARY KEY AUTO_INCREMENT,
id_Location varchar,
datetime_Connect datetime,
response_TimeMs int,
status_Code varchar(5),
status_Message varchar(255)
);
CREATE TABLE postgresql_historylog (
id_postgresqlConnection BIGINT PRIMARY KEY AUTO_INCREMENT,
id_Location varchar,
datetime_Connect datetime,
response_TimeMs int,
status_Code varchar(5),
status_Message varchar(255)
);
我想我可以用它做一个观景台。。
或者我应该放在一张table下面?这样地。。
CREATE TABLE connection_historylog (
id_Connection BIGINT PRIMARY KEY AUTO_INCREMENT,
id_Location varchar,
connectionType varchar, # Internet, WebService, Databases
datetime_Connect datetime,
response_TimeMs int,
status_Code varchar(5),
status_Message varchar(255)
);
我想要的是:
提高了长期目标的表现,因为它每一分钟都在积极写作。这也会影响我以后如何调用这些数据。可以询问更多信息。
2条答案
按热度按时间vs91vp4v1#
单表,但主要是因为这可能是正确的方式。
其他注意事项:
无论哪种方式,写操作的性能都是相同的。
1
INSERT
每分钟是微不足道的。即使是1/秒也是微不足道的。1000/秒可以得到骰子。读取的性能取决于您将要执行的过滤/排序操作。一旦我们看到
SELECTs
,我们可以讨论INDEXes
.1行/分钟不到100万行/年,所以我认为不需要讨论任何关于扩展的问题。
没有任何迹象表明
PARTITIONing
会有任何用处的。gcmastyq2#
一般来说,应该将类似的表放在一个表中。随着时间的推移,这有多种优势:
查看不同类型数据的查询要简单得多,而且更易于优化。
您可以添加新类型,只需插入到现有表中即可。
维护和操作更简单。例如,添加索引只需要在一个表上进行,而不需要在多个表上进行。
在只插入的环境中,表将填充数据页,这对性能更好。
为了使这样的环境工作得最好,您需要索引,也许还需要分区。具体的索引取决于数据的使用方式。