Почему этот запрос замедляет так сильно со временемPhp

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Почему этот запрос замедляет так сильно со временем

Сообщение Anonymous »

Я тестирую с очень простой очередью базы данных, чтобы увидеть, как быстро я могу его обработать. На данный момент, даже не делая ничего другого, тогда просто извлекая его из очереди. Столбцы, используемые в пункте «Где», проиндексированы, а порядок - на первичном ключе. Таблица очередей была заполнена миллионом записей и статусом 0. Каждое последующее выполнение без сброса очереди сделает его медленнее и медленнее со временем. Если я вручную обновляю 500000 строк до статуса 1 и запускаю сценарий, это займет всего около 50 за 10 секунд. Вручную сбросить все строки в статус 0 снова увеличит скорость. 32 ядра и 32 ГБ ОЗУ, предоставленные для каждого сервера. Ни один сервер каждый не превышает 10% ЦП или 25% ОЗУ. Физический сервер имеет 256 ГБ ОЗУ, 96 x AMD EPYC 9454P 48-ядерный процессор (1 розетка) и диски NVME SSD. Сеть между ними составляет около 12 гбит/сек в соответствии с iperf3.
Определение моей таблицы:

Код: Выделить всё

CREATE 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,
CONSTRAINT [PK_testqueue] PRIMARY KEY CLUSTERED ([id] ASC)
)
CREATE INDEX [ix_guid] ON [dbo].[testqueue] ([guid])
CREATE INDEX [ix_selector] ON [dbo].[testqueue] ([status],[notbefore])
< /code>
И это мой скрипт PHP: < /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]
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»