我希望我的活动每天在 00:20 运行。我对时间安排感到困惑。我应该使用第一个选项还是第二个选项?
选项1
CREATE EVENT my_event
ON SCHEDULE
EVERY 1 DAY
STARTS '2014-04-30 00:20:00' ON COMPLETION PRESERVE ENABLE
DO
# My query
Run Code Online (Sandbox Code Playgroud)
选项 2
CREATE EVENT my_event
ON SCHEDULE
AT ('2014-04-30 00:20:00'+ INTERVAL 1 DAY) ON COMPLETION PRESERVE ENABLE
DO
# My query
Run Code Online (Sandbox Code Playgroud) 我只是设置了一些存储过程以使用 CREATE EVENT 在事件调度程序中运行。
我试图找到它运行的历史存储在哪里(如果在某个地方)。我查看了文档,但找不到任何内容。
是否有一些表格或日志可以让我看到我的预定事件已成功运行?
如何永久打开 mysqld 中的事件调度程序?我正在使用 phpMyAdmin,我已经安排了一个事件,每天在特定时间将记录从一个表复制到另一个表,但记录并不是每天都被复制。我试过设置事件调度程序。
SET GLOBAL event_scheduler="ON";
Run Code Online (Sandbox Code Playgroud)
当我重新启动我的电脑时,事件调度程序被关闭。如何使它始终打开,并且在重新启动 mysqld 时不关闭?
我有一个扩展事件可以过滤我的慢速查询。我为其创建了以下脚本。
CREATE EVENT SESSION [SlowQueriesAndStatementsLargerThan3Seconds] ON SERVER
ADD EVENT sqlserver.rpc_completed(SET collect_statement=(1)
ACTION(sqlserver.client_app_name,sqlserver.client_hostname,sqlserver.database_id,sqlserver.database_name,sqlserver.nt_username,sqlserver.session_id,sqlserver.session_nt_username,sqlserver.sql_text,sqlserver.username)
WHERE ([duration]>=(3000000))),
ADD EVENT sqlserver.sp_statement_completed(
ACTION(sqlserver.client_app_name,sqlserver.client_hostname,sqlserver.client_pid,sqlserver.database_name,sqlserver.nt_username,sqlserver.server_principal_name,sqlserver.session_id)
WHERE ([duration]>=(3000000))),
ADD EVENT sqlserver.sql_batch_completed(
ACTION(sqlserver.client_app_name,sqlserver.client_hostname,sqlserver.database_id,sqlserver.database_name,sqlserver.nt_username,sqlserver.session_id,sqlserver.session_nt_username,sqlserver.sql_text,sqlserver.username)
WHERE ([duration]>=(3000000)))
ADD TARGET package0.event_file(SET filename=N'SlowQueriesAndStatementsLargerThan3Seconds'),
ADD TARGET package0.ring_buffer
WITH (MAX_MEMORY=4096 KB,EVENT_RETENTION_MODE=ALLOW_SINGLE_EVENT_LOSS,MAX_DISPATCH_LATENCY=30 SECONDS,MAX_EVENT_SIZE=0 KB,MEMORY_PARTITION_MODE=NONE,TRACK_CAUSALITY=ON,STARTUP_STATE=ON)
GO
Run Code Online (Sandbox Code Playgroud)
我想包括我的查询在速度缓慢时正在等待的位置。我想包含它的 wait_info ,但是当我添加它时,我的跟踪充满了与其他查询无关的等待。为了跟踪等待情况,我添加了以下事件:
CREATE EVENT SESSION [SlowQueriesAndStatementsLargerThan3Seconds] ON SERVER
ADD EVENT sqlos.wait_info(
ACTION(sqlos.task_elapsed_quantum,sqlos.task_time,sqlserver.client_app_name,sqlserver.client_hostname,sqlserver.database_id,sqlserver.database_name,sqlserver.session_id,sqlserver.sql_text)
WHERE ([opcode]='End')),
ADD EVENT sqlserver.rpc_completed(SET collect_statement=(1)
ACTION(sqlserver.client_app_name,sqlserver.client_hostname,sqlserver.database_id,sqlserver.database_name,sqlserver.nt_username,sqlserver.session_id,sqlserver.session_nt_username,sqlserver.sql_text,sqlserver.username)
WHERE ([duration]>=(3000000))),
ADD EVENT sqlserver.sp_statement_completed(
ACTION(sqlserver.client_app_name,sqlserver.client_hostname,sqlserver.client_pid,sqlserver.database_name,sqlserver.nt_username,sqlserver.server_principal_name,sqlserver.session_id)
WHERE ([duration]>=(3000000))),
ADD EVENT sqlserver.sql_batch_completed(
ACTION(sqlserver.client_app_name,sqlserver.client_hostname,sqlserver.database_id,sqlserver.database_name,sqlserver.nt_username,sqlserver.session_id,sqlserver.session_nt_username,sqlserver.sql_text,sqlserver.username)
WHERE ([duration]>=(3000000)))
ADD TARGET package0.event_file(SET filename=N'SlowQueriesAndStatementsLargerThan3Seconds'),
ADD TARGET package0.ring_buffer …Run Code Online (Sandbox Code Playgroud) 我有一个带有列的表 T1:
Name State time
mon 1 2014-01-09 11:23:00
tue 0 2014-01-07 14:40:00
wed 2 2014-01-08 09:23:00
thu 0 2014-01-09 12:23:00
Run Code Online (Sandbox Code Playgroud)
现在我想安排一个事件或开发一个触发器(如果可能),如果任何状态为 0/2 并且其时间距当前时间超过 24 小时,则应将其更新为 1。
例如在上表中, Tue 的 state 是 0 并且 time 超过 24 hours ,所以 state 应该更新为 1 并且同样适用于 wed ,但不适用于 thu 。
我经历了很多问题,例如:
但我还没明白,如何解决我的问题
我有一个 PostgreSQL 表设置作为队列/事件源。
我非常希望保留事件的“顺序”(即使在处理队列项之后)作为 e2e 测试的来源。
我开始遇到查询性能下降的问题(可能是因为表膨胀),并且我不知道如何有效地查询不断变化的键上的表。
Postgres:v15
CREATE TABLE eventsource.events (
id serial4 NOT NULL,
message jsonb NOT NULL,
status varchar(50) NOT NULL,
createdOn timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
CONSTRAINT events_pkey PRIMARY KEY (id)
);
CREATE INDEX ON eventsource.events (createdOn)
Run Code Online (Sandbox Code Playgroud)
BEGIN; -- Start transaction
SELECT message, status
FROM eventsource.events ee
WHERE status = 'PENDING'
ORDER BY ee.createdOn ASC
FOR UPDATE SKIP LOCKED
LIMIT 10; -- Get the OLDEST 10 events that are pending
-- I …Run Code Online (Sandbox Code Playgroud) event ×6
mysql ×4
mysql-5.5 ×2
index ×1
jobs ×1
phpmyadmin ×1
postgresql ×1
queue ×1
sql-server ×1
trigger ×1
waits ×1