当前位置: 首页 > news >正文

MySQL中ddl操作或创建索引防止锁表的一些建议或解决方案

一、DDL操作

【说明】目前没有任何一种办法可以保证在DDL操作下能完全避免锁表。MySQL 需要确保数据的一致性和完整性,这意味着在执行 DDL 操作时需要获取锁

【建议】
(1)建议在生产环境中进行任何重大DDL更改,都要在测试环境充分测试验证
(2)在生产环境中对数据量较大的表进行DDL操作,选择在流量较小的时段执行较为合适

二、创建索引

表结构示例

create table t_verify
(
    id   bigint auto_increment comment 'id'
        primary key,
    name varchar(50) null comment '名称'
)
    comment '临时验证表';

1、使用 algorithm = inplace

【说明】使用 algorithm = inplace 原地算法,减少对数据库性能的影响

-- 创建索引
create index idx_name on t_verify (name) comment 'name索引' algorithm = inplace;
-- 删除索引
drop index idx_name on t_verify algorithm = inplace;

2、使用 lock = none【推荐】

【说明】使用 lock = none 明确告诉MySQL在创建索引时不锁表

-- 创建索引
create index idx_name on t_verify (name) comment 'name索引' lock = none;
-- 删除索引
drop index idx_name on t_verify lock = none;

备注:
(1)lock的可选项除了 none,还可以使用 shared(共享锁:允许读操作,但会阻塞写操作)

http://www.dtcms.com/a/23415.html

相关文章:

  • 深度优先和广度优先【栈、堆前端举例】
  • 【数据结构初阶第十节】队列(详解+附源码)
  • [LeetCode]day25 151.翻转字符串里的单词
  • Spring Boot中使用Server-Sent Events (SSE) 实现实时数据推送教程
  • 力扣144. 二叉树的前序遍历145. 二叉树的后序遍历94. 二叉树的中序遍历(递归版)
  • 市盈率(P/E Ratio):理解股票价格与盈利的关系(中英双语)
  • 尚硅谷爬虫note008
  • 重新求职刷题力扣DAY15
  • 【机器学习第一期】决策树原理及实现步骤:含MATLAB/Python实现代码
  • 大模型常识:什么是大模型/大语言模型/LLM
  • 安卓携手电脑,畅享局域网手机投屏全屏新体验
  • CentOS7 离线安装 Postgresql 指南
  • Softing线上研讨会 | 自研还是购买——用于自动化产品的工业以太网
  • 阿波罗STM32F767 FreeRTOS扩展例程
  • 扩增子分析|基于R包ggClusterNet包进行生态网络分析—十种可视化布局包括igraph,Gephi和maptree
  • 最新VS code配置C/C++环境(tasks.json, launch.json,c_cpp_properties.json)及运行多个文件、配置Cmake
  • STM32的HAL库开发---单通道ADC采集实验
  • 业务架构、数据架构、应用架构和技术架构
  • DeepSeek与人工智能的结合:探索搜索技术的未来
  • LeetCode-680. 验证回文串 II
  • Web开发技术概述
  • gsoap实现webservice服务
  • 数据结构:算法的时间复杂度和空间复杂度
  • docker 安装 nacos 与配置持久化详解
  • 【Spring Boot】Spring AOP 快速上手指南:开启面向切面编程新旅程
  • Unity3D UI菜单与场景切换详解
  • 跨平台AES/DES加密解密算法【超全】
  • PostgreSQL认证指南
  • DeepSeek冲击(含本地化部署实践)
  • NAT模式 vs DR模式:LVS 负载均衡技术的优劣与适用场景