【发布时间】:2019-01-04 08:01:46
【问题描述】:
我正在尝试制作一个程序,该程序将 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)
);
我猜我可以用它制作一个视图表..
或者我应该把它放在一张桌子下面吗?像这样..
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)
);
我想要的:
提高了长期目标的性能,因为它每分钟都在积极地写作。这也会影响我以后如何调用这些数据。可以询问更多信息。
【问题讨论】:
-
为什么
time_Connect的类型是date?为什么不使用datetime或timestamp类型的单列来包含日期和时间? -
哦,抱歉,会解决的。为什么不
datetime?我在某处读过最好分别使用date和time。但我不太确定自己,因为我是数据库新手,但如果结果是错误的,请纠正我。 -
这是一个错误的陈述。使用 datetime 或 timestamp 格式,不要分隔日期和时间。如果您将它们分开,它将使您未来的查询变得复杂,并无缘无故地给您的数据库增加压力。 Date 和 Time 格式仅应在您只需要存储日期或时间时使用,此处不是这种情况。
-
啊,好的,在 damien_the_unbeliever 发表评论后,我开始再次寻找它。问题已更新。也感谢@ThomasG 的启发!
-
只有当您确定将来不会添加大量“连接类型”时,您当前的模式才有效,这将迫使您创建额外的表并编写新代码。就我个人而言,我会选择第二个选项:将所有日志放在同一个表中并带有类型列。
标签: mysql sql database mariadb