如何用正确的方法创建具有相似数据的表?

hgc7kmma  于 2021-06-16  发布在  Mysql
关注(0)|答案(2)|浏览(365)

我试图使一个程序,将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)
);

我想要的是:
提高了长期目标的表现,因为它每一分钟都在积极写作。这也会影响我以后如何调用这些数据。可以询问更多信息。

vs91vp4v

vs91vp4v1#

单表,但主要是因为这可能是正确的方式。
其他注意事项:
无论哪种方式,写操作的性能都是相同的。
1 INSERT 每分钟是微不足道的。即使是1/秒也是微不足道的。1000/秒可以得到骰子。
读取的性能取决于您将要执行的过滤/排序操作。一旦我们看到 SELECTs ,我们可以讨论 INDEXes .
1行/分钟不到100万行/年,所以我认为不需要讨论任何关于扩展的问题。
没有任何迹象表明 PARTITIONing 会有任何用处的。

gcmastyq

gcmastyq2#

一般来说,应该将类似的表放在一个表中。随着时间的推移,这有多种优势:
查看不同类型数据的查询要简单得多,而且更易于优化。
您可以添加新类型,只需插入到现有表中即可。
维护和操作更简单。例如,添加索引只需要在一个表上进行,而不需要在多个表上进行。
在只插入的环境中,表将填充数据页,这对性能更好。
为了使这样的环境工作得最好,您需要索引,也许还需要分区。具体的索引取决于数据的使用方式。

相关问题