当前位置: 首页 > 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(共享锁:允许读操作,但会阻塞写操作)

相关文章:

  • 深度优先和广度优先【栈、堆前端举例】
  • 【数据结构初阶第十节】队列(详解+附源码)
  • [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
  • 上海文化馆服务宣传周启动,为市民提供近2000项活动
  • 上千螺母引发的枪支散件案:五金厂老板的儿子被诉,律师作无罪辩护
  • 墨西哥海军一载两百余人帆船撞上纽约布鲁克林大桥,多人落水
  • 浙江美术馆馆长人民日报撰文:打开更辽阔的审美场域
  • 南京艺术学院博导、雕塑家尹悟铭病逝,年仅45岁
  • 菲律宾中期选举结果揭晓,马科斯与杜特尔特家族重回“权力的游戏”