Заменить MySQL в причинах тупиков во время вставки данных с высоким содержанием параметров. Какие блокировки заменяют в приобретение во время выполнения, и почему возникают тупики? Возможны вставленные данные по другим потокам (до или после вставки), хотя обновления представляют собой операции на одном ряду.
2. Структура таблицы (200 миллионов строк): < /p>
< /blockquote>
CREATE TABLE downlink_record (
id bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT 'Auto-increment primary key',
message_id varchar(128) NOT NULL,
template_id varchar(20) NOT NULL,
address varchar(256) NOT NULL,
sign varchar(64) DEFAULT NULL,
sign_id varchar(64) DEFAULT NULL,
order_id varchar(256) DEFAULT NULL,
sms_type int(11) DEFAULT NULL,
amount int(11) DEFAULT NULL,
report_num int(11) DEFAULT NULL,
agent_name varchar(128) DEFAULT NULL,
account_name varchar(128) DEFAULT NULL,
team_id varchar(64) DEFAULT NULL,
country_name varchar(20) DEFAULT NULL,
router_name varchar(128) DEFAULT NULL,
operator_name varchar(128) DEFAULT NULL,
error_code varchar(128) DEFAULT NULL,
send_status int(11) DEFAULT NULL,
verify_status int(11) DEFAULT NULL,
retry_count int(11) DEFAULT NULL,
create_time bigint(20) DEFAULT NULL,
deliver_time bigint(20) DEFAULT NULL,
report_time bigint(20) DEFAULT NULL,
receive_time bigint(20) DEFAULT NULL,
verify_time bigint(20) DEFAULT NULL,
last_update_time bigint(20) DEFAULT NULL,
content text,
extra_info text,
PRIMARY KEY (id),
UNIQUE KEY idx_message_id_retry_count (message_id, retry_count),
KEY idx_message_id (message_id(120)),
KEY idx_team_id (team_id),
KEY idx_order_agent (order_id(191), agent_name),
KEY idx_deliver_time (deliver_time),
KEY idx_receive_time (receive_time),
KEY idx_msg_addr_temp_status (address, template_id, send_status),
KEY idx_create_time (create_time),
KEY idx_template_id_send_status_create_time (template_id, send_status, create_time)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
< /code>
Все тупики включают индекс idx_message_id_retry_count. Журнал Deadlock: < /li>
< /ol>
2025-09-24 18:53:59 0x7fd24dbff700
*** (1) TRANSACTION:
TRANSACTION 55063751429, ACTIVE 0 sec inserting
mysql tables in use 1, locked 1
LOCK WAIT 4 lock struct(s), heap size 1136, 4 row lock(s), undo log entries 2
MySQL thread id 670729, OS thread handle 140553453934336, query id 6781831678 10.142.167.7 sms_x update
REPLACE INTO sms_downlink_record (...) VALUES (...) -- Truncated; no duplicate data between REPLACE operations
*** (1) WAITING FOR THIS LOCK TO BE GRANTED:
RECORD LOCKS space id 75 page no 16582916 n bits 344 index idx_message_id_retry_count of table sms.sms_downlink_record trx id 55063751429 lock_mode X insert intention waiting
*** (2) TRANSACTION:
TRANSACTION 55063751430, ACTIVE 0 sec inserting, thread declared inside InnoDB 4998
mysql tables in use 1, locked 1
4 lock struct(s), heap size 1136, 5 row lock(s), undo log entries 3
MySQL thread id 671750, OS thread handle 140541224285952, query id 6781831679 10.142.210.13 sms_x update
REPLACE INTO sms_downlink_record (...) VALUES (...) -- Truncated; no duplicate data between REPLACE operations
*** (2) HOLDS THE LOCK(S):
RECORD LOCKS space id 75 page no 16582916 n bits 344 index idx_message_id_retry_count of table sms.sms_downlink_record trx id 55063751430 lock_mode X
*** (2) WAITING FOR THIS LOCK TO BE GRANTED:
RECORD LOCKS space id 75 page no 16582916 n bits 344 index idx_message_id_retry_count of table sms.sms_downlink_record trx id 55063751430 lock_mode X insert intention waiting
*** WE ROLL BACK TRANSACTION (1)
< /code>
Я попытался запустить одновременную замену в сценарии локально, но я никогда не смог воспроизвести проблему. Эта проблема с тупиком возникла в центре управляемой базы данных нашей компании с контролем доступа, и я не могу произвольно записать данные в производственную среду.>
Подробнее здесь: https://stackoverflow.com/questions/797 ... place-into
Решение проблемы тупика с MySQL заменить в ⇐ MySql
Форум по Mysql
-
Anonymous
1758889676
Anonymous
Заменить MySQL в причинах тупиков во время вставки данных с высоким содержанием параметров. Какие блокировки заменяют в приобретение во время выполнения, и почему возникают тупики? Возможны вставленные данные по другим потокам (до или после вставки), хотя обновления представляют собой операции на одном ряду.
2. Структура таблицы (200 миллионов строк): < /p>
< /blockquote>
CREATE TABLE downlink_record (
id bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT 'Auto-increment primary key',
message_id varchar(128) NOT NULL,
template_id varchar(20) NOT NULL,
address varchar(256) NOT NULL,
sign varchar(64) DEFAULT NULL,
sign_id varchar(64) DEFAULT NULL,
order_id varchar(256) DEFAULT NULL,
sms_type int(11) DEFAULT NULL,
amount int(11) DEFAULT NULL,
report_num int(11) DEFAULT NULL,
agent_name varchar(128) DEFAULT NULL,
account_name varchar(128) DEFAULT NULL,
team_id varchar(64) DEFAULT NULL,
country_name varchar(20) DEFAULT NULL,
router_name varchar(128) DEFAULT NULL,
operator_name varchar(128) DEFAULT NULL,
error_code varchar(128) DEFAULT NULL,
send_status int(11) DEFAULT NULL,
verify_status int(11) DEFAULT NULL,
retry_count int(11) DEFAULT NULL,
create_time bigint(20) DEFAULT NULL,
deliver_time bigint(20) DEFAULT NULL,
report_time bigint(20) DEFAULT NULL,
receive_time bigint(20) DEFAULT NULL,
verify_time bigint(20) DEFAULT NULL,
last_update_time bigint(20) DEFAULT NULL,
content text,
extra_info text,
PRIMARY KEY (id),
UNIQUE KEY idx_message_id_retry_count (message_id, retry_count),
KEY idx_message_id (message_id(120)),
KEY idx_team_id (team_id),
KEY idx_order_agent (order_id(191), agent_name),
KEY idx_deliver_time (deliver_time),
KEY idx_receive_time (receive_time),
KEY idx_msg_addr_temp_status (address, template_id, send_status),
KEY idx_create_time (create_time),
KEY idx_template_id_send_status_create_time (template_id, send_status, create_time)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
< /code>
Все тупики включают индекс idx_message_id_retry_count. Журнал Deadlock: < /li>
< /ol>
2025-09-24 18:53:59 0x7fd24dbff700
*** (1) TRANSACTION:
TRANSACTION 55063751429, ACTIVE 0 sec inserting
mysql tables in use 1, locked 1
LOCK WAIT 4 lock struct(s), heap size 1136, 4 row lock(s), undo log entries 2
MySQL thread id 670729, OS thread handle 140553453934336, query id 6781831678 10.142.167.7 sms_x update
REPLACE INTO sms_downlink_record (...) VALUES (...) -- Truncated; no duplicate data between REPLACE operations
*** (1) WAITING FOR THIS LOCK TO BE GRANTED:
RECORD LOCKS space id 75 page no 16582916 n bits 344 index idx_message_id_retry_count of table sms.sms_downlink_record trx id 55063751429 lock_mode X insert intention waiting
*** (2) TRANSACTION:
TRANSACTION 55063751430, ACTIVE 0 sec inserting, thread declared inside InnoDB 4998
mysql tables in use 1, locked 1
4 lock struct(s), heap size 1136, 5 row lock(s), undo log entries 3
MySQL thread id 671750, OS thread handle 140541224285952, query id 6781831679 10.142.210.13 sms_x update
REPLACE INTO sms_downlink_record (...) VALUES (...) -- Truncated; no duplicate data between REPLACE operations
*** (2) HOLDS THE LOCK(S):
RECORD LOCKS space id 75 page no 16582916 n bits 344 index idx_message_id_retry_count of table sms.sms_downlink_record trx id 55063751430 lock_mode X
*** (2) WAITING FOR THIS LOCK TO BE GRANTED:
RECORD LOCKS space id 75 page no 16582916 n bits 344 index idx_message_id_retry_count of table sms.sms_downlink_record trx id 55063751430 lock_mode X insert intention waiting
*** WE ROLL BACK TRANSACTION (1)
< /code>
Я попытался запустить одновременную замену в сценарии локально, но я никогда не смог воспроизвести проблему. Эта проблема с тупиком возникла в центре управляемой базы данных нашей компании с контролем доступа, и я не могу произвольно записать данные в производственную среду.>
Подробнее здесь: [url]https://stackoverflow.com/questions/79775928/solving-deadlock-issue-with-mysql-replace-into[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия