Я понятия не имею, что я мог бы сделать, чтобы оптимизировать это в качестве индексов, аппаратное обеспечение достаточно, а запрос примерно настолько просты. 24.04 для простого скрипта PHP работает на двух отдельных виртуальных машинах на Proxmox с 32 ядрами и 32 ГБ ОЗУ, предоставленной на каждый сервер. Ни один сервер каждый не превышает 10% ЦП или 25% ОЗУ. Физический сервер имеет 256 ГБ ОЗУ, 96 x AMD EPYC 9454P 48-ядерный процессор (1 розетка) и диски NVME SSD. Сеть между ними составляет около 12 гбит/с в соответствии с iPerf3.
База данных:
Код: Выделить всё
TABLE [dbo].[testqueue]
[id] [bigint] IDENTITY(1,1) NOT NULL,
[guid] [uniqueidentifier] NOT NULL,
[created] [datetime] NOT NULL,
[notbefore] [datetime] NOT NULL,
[status] [tinyint] NOT NULL,
[task] [nvarchar](255) NOT NULL,
[data] [nvarchar](max) NULL,
[completed] [datetime] NULL,
CREATE INDEX [ix_guid] ON [dbo].[testqueue] ([guid])
CREATE INDEX [ix_selector] ON [dbo].[testqueue] ([status],[notbefore])
< /code>
php script: < /p>
$connection = new \PDO('sqlsrv:Server='.$server.';Database='.$db.';', $user, $pass);
$connection->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION);
$time = time();
$count = 0;
$query = '
WITH CTE AS (
SELECT TOP 1 *
FROM [dbo].[testqueue]
WHERE [status]=0
AND [notbefore]
Подробнее здесь: [url]https://stackoverflow.com/questions/79775969/why-does-this-query-slow-down-this-much-over-time[/url]
Мобильная версия