Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/65.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 创建数据库的cron作业会影响用户吗?_Mysql_Cron - Fatal编程技术网

Mysql 创建数据库的cron作业会影响用户吗?

Mysql 创建数据库的cron作业会影响用户吗?,mysql,cron,Mysql,Cron,我有一个网站,我需要创建一个临时数据库表,每5小时重新创建一次。完成此操作大约需要0.5秒 网站分析显示,点击率约为每秒5次。这个数字可能会逐渐增加 问题: cron作业清空数据库并重新创建它。这是否意味着,当某人正在访问一个页面,该页面在cron作业下处于活动状态时基于临时数据库填充数据,他可能没有找到数据或数据不完整? 或 由于锁定,Mysql会处理此场景?正如我所知,当您锁定表时,其他人无法访问该表,除非您将其解锁,但其他连接将只等待0.5秒,因此您的用户在重新创建表时可能需要额外等待0.

我有一个网站,我需要创建一个临时数据库表,每5小时重新创建一次。完成此操作大约需要0.5秒

网站分析显示,点击率约为每秒5次。这个数字可能会逐渐增加

问题: cron作业清空数据库并重新创建它。这是否意味着,当某人正在访问一个页面,该页面在cron作业下处于活动状态时基于临时数据库填充数据,他可能没有找到数据或数据不完整? 或
由于锁定,Mysql会处理此场景?

正如我所知,当您锁定表时,其他人无法访问该表,除非您将其解锁,但其他连接将只等待0.5秒,因此您的用户在重新创建表时可能需要额外等待0.5秒


不要担心没有数据,只是偶尔会有延迟

我知道,当您锁定表时,其他人无法访问该表,除非您解锁该表,但其他连接将只等待0.5秒,因此您的用户在重新创建表时可能需要额外等待0.5秒


不要担心没有数据,只是偶尔会有延迟

根据我的测试,如果一个MySQWL客户端试图删除一个数据库,而另一个客户端锁定了它的一个表,那么该客户端将等待Table被解锁

但是,删除数据库的客户端本身也不能对数据库的任何表持有锁。因此,根据您正在执行的操作,您可能需要使用其他方法来序列化请求等等。例如,如果作业需要删除并重新创建数据库、创建表并在其他客户端使用它们之前填充它们,那么表锁定将是一个问题,因为并不总是有要锁定的表

考虑使用显式锁定来协调“临时”数据库上的操作


也考虑重新考虑你的策略。定期删除和重新创建整个数据库不是一种常见做法。

根据我的测试,如果一个MySQWL客户端试图删除数据库,而另一个客户端的一个表被锁定,则客户端将等待Table解锁

但是,删除数据库的客户端本身也不能对数据库的任何表持有锁。因此,根据您正在执行的操作,您可能需要使用其他方法来序列化请求等等。例如,如果作业需要删除并重新创建数据库、创建表并在其他客户端使用它们之前填充它们,那么表锁定将是一个问题,因为并不总是有要锁定的表

考虑使用显式锁定来协调“临时”数据库上的操作


也考虑重新考虑你的策略。定期删除和重新创建整个数据库不是一种常见做法。

您可以先在临时名称下创建,然后填充旧数据库,然后在重命名新数据库时删除旧数据库,而不是删除和重新创建数据库


此外,如果找不到表,您应该使web应用程序适合重试,以应对表不在此处的小时间窗口,或者在视图上操作而不是重命名表。

您可以先在临时名称下创建,而不是删除和重新创建,在重命名新文件时填充并删除旧文件


此外,如果找不到表格,您应该使web应用适合重试,以应对表格不在此处的小时间窗口,或者在视图上操作而不是重命名表格。

谢谢您提供的信息。我也意识到放弃和重新创造不是一个好的做法。我能用什么方法解决这个问题?我的中间数据库用于主菜单,出现在每一页上。谢谢你的信息。我也意识到放弃和重新创造不是一个好的做法。我能用什么方法解决这个问题?我的中间数据库用于主菜单,出现在每一页上。