Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否基于日期自动在MySQL服务器上创建表?_Sql_Mysql_Database Design_Cron_Data Modeling - Fatal编程技术网

是否基于日期自动在MySQL服务器上创建表?

是否基于日期自动在MySQL服务器上创建表?,sql,mysql,database-design,cron,data-modeling,Sql,Mysql,Database Design,Cron,Data Modeling,MySQL是否有与cron相当的版本 我有一个PHP脚本,可以根据月份和年份查询表,如: SELECT * FROM data_2010_1 到目前为止,我一直在做的是,每次脚本执行时,它都会对表进行查询,如果表存在,则执行工作,如果不存在,则创建表 我想知道我是否可以在MySQL服务器上设置一些东西,在月初午夜的钟声中创建表(基于默认表) 更新 根据我得到的评论,我认为这不是实现我目标的最佳方式。这里还有两个问题: 如果我有一个每月添加数千行的表,这可能会拖累资源吗?如果是这样的话,既然上

MySQL是否有与
cron
相当的版本

我有一个PHP脚本,可以根据月份和年份查询表,如:

SELECT * FROM data_2010_1
到目前为止,我一直在做的是,每次脚本执行时,它都会对表进行查询,如果表存在,则执行工作,如果不存在,则创建表

我想知道我是否可以在MySQL服务器上设置一些东西,在月初午夜的钟声中创建表(基于默认表)


更新 根据我得到的评论,我认为这不是实现我目标的最佳方式。这里还有两个问题:

  • 如果我有一个每月添加数千行的表,这可能会拖累资源吗?如果是这样的话,既然上面是verboten,那么划分这个表的最佳方法是什么

  • 我最初想到的土生土长的方法有哪些潜在问题


  • 看看MySQL 5.1中提供的事件调度器:


    看看MySQL 5.1中提供的事件调度程序:


    取而代之的是,一个表有一个月和年列,或者更好的是有一个时间戳可以查询。

    取而代之的是,一个表有一个月和年列,或者更好的是有一个时间戳可以查询。

    如果我有一个表,每月添加数千行,这可能会拖累资源吗?
    如果进行每月表拆分,则行数相同。数据库处理数百万行—这不是问题

    我最初想到的土生土长的方法有哪些潜在问题?
    首先是屁股上的痛,加入12张表格只是为了总结一年来的细节,而不是一张表格。需要更多的基础设施和维护来确保记录在正确的表中

    如果我有一个每月添加数千行的表,这可能会拖累资源吗?
    如果进行每月表拆分,则行数相同。数据库处理数百万行—这不是问题

    我最初想到的土生土长的方法有哪些潜在问题?

    首先是屁股上的痛,加入12张表格只是为了总结一年来的细节,而不是一张表格。需要更多的基础设施和维护来确保记录在正确的表中

    您最初的“计划表创建”的目标是什么?你担心把所有的数据都放在网上吗?也许出于某种安全原因,您想删除上个月的数据

    如果您确实需要将月份分开,那么您的“计划表创建”想法就存在同步问题。将事件安排在午夜并不保证它将在午夜完全执行。那么,如果计划的创建恰好发生在早起的用户盲目地进行一个期望当前表存在的查询之后的几分之一秒,您将怎么做?因此,将空表创建与查询保持在同一位置是一个更好的主意


    好的,您可以在午夜之前安排创建。但是,如果为将来的日期在线创建一个空表不是问题,为什么不提前一两年手动创建表呢?

    您最初的“计划表创建”的目标是什么?你担心把所有的数据都放在网上吗?也许出于某种安全原因,您想删除上个月的数据

    如果您确实需要将月份分开,那么您的“计划表创建”想法就存在同步问题。将事件安排在午夜并不保证它将在午夜完全执行。那么,如果计划的创建恰好发生在早起的用户盲目地进行一个期望当前表存在的查询之后的几分之一秒,您将怎么做?因此,将空表创建与查询保持在同一位置是一个更好的主意

    好的,您可以在午夜之前安排创建。但是,如果未来某个日期的在线空表不是问题,为什么不提前一两年手动创建这些表呢

    如果我有一张有数千人的桌子 每月添加一行,是吗 可能拖累资源?如果 那么,最好的分区方法是什么 这张表,因为上面是 沃博坦

    当然,它会使用资源,因为您需要向数据库添加数据/信息。它对资源的拖累并不比拥有不同的表更大——应该更小——因为每个表都有与维护表相关的开销

    分区问题

    我不认为它是“分区”,但它完全取决于您的数据以及如何使用数据。在任何SQL系统中,您都可以基于列或列的组合预先编制索引。当您预索引时,基本上就是“分区”。因此,如果您知道大部分时间都是基于日期(例如月/年)查看数据,那么您可以在日期字段中添加索引。从抽象的角度来看,这是按日期对数据进行分区。创建什么索引取决于如何使用数据——创建的越多,用于维护索引的时间/空间就越多,但使用索引的语句的性能就越快

    UPDATE pageviews SET 
            yesterday = CASE WHEN last_update_time > xxx_ts THEN yesterday ELSE today END,
            today     = CASE WHEN last_update_time > xxx_ts THEN today + 1 ELSE 1     END, 
            acc = acc + 1, last_update_time = UNIX_TIMESTAMP() WHERE page_id = 'xxx';
    
    如果我有一张有数千人的桌子 每月添加一行,是吗 可能拖累资源?如果 那么,最好的分区方法是什么 这张表,因为上面是 沃博坦

    当然,它会使用资源,因为您需要向数据库添加数据/信息。它对资源的拖累并不比拥有不同的表更大——应该更小——因为每个表都有与维护表相关的开销

    分区问题

    我不认为它是“分区”,但它是完整的