Redis系列之慢查询分析与调优
Redis 慢查询分析与优化:提升性能的实战指南
Redis 作为一款高性能的内存数据库,因其快速的数据读写能力和灵活的数据结构,被广泛应用于缓存、消息队列、排行榜等多种业务场景。然而,随着业务规模的扩大和数据量的增加,Redis 的性能问题逐渐显现,其中慢查询是一个常见的瓶颈。本文将详细介绍 Redis 慢查询的分析方法和优化策略,帮助开发者和运维人员提升 Redis 的性能。
一、Redis 慢查询的定义与日志
Redis 的慢查询日志是诊断性能问题的重要工具。它记录了执行时间超过预设阈值的命令,每条日志包含以下关键信息:
- 标识 ID:唯一标识每条慢查询日志。
- 发生时间戳:命令执行的时间。
- 命令耗时:命令的执行时间(单位为微秒)。
- 执行命令和参数:记录执行的命令及其参数。
慢查询日志的配置参数如下(可在 redis.conf
文件中配置):
slowlog-log-slower-than 10000 # 默认 10ms,建议设置为 1ms
slowlog-max-len 128 # 最多存储 128 条慢查询数据
参数说明
slowlog-log-slower-than
:设置命令执行时间的阈值(单位为微秒)。默认为 10000 微秒(10 毫秒)。如果设置为 0,则记录所有命令;如果设置为负值,则不记录任何命令。slowlog-max-len
:设置慢查询日志的最大长度。当日志达到最大长度时,最早的日志会被移除。
示例配置
在生产环境中,建议将 slowlog-log-slower-than
设置为 1 毫秒(1000 微秒),以便更早地发现潜在的性能问题。同时,根据实际需求调整 slowlog-max-len
,以存储更多慢查询日志。
slowlog-log-slower-than 1000
slowlog-max-len 512
二、慢查询的常见原因
Redis 慢查询的产生可能由外部环境或内部操作引起,以下是详细分析:
(一)外部原因
- 网络延迟:客户端与 Redis 服务器之间的网络延迟可能导致客户端感知到的响应时间变长。
- CPU 竞争:Redis 是单线程的,如果服务器的 CPU 资源被其他进程占用,可能导致 Redis 命令执行变慢。
- 内存不足:当 Redis 使用的内存接近服务器的物理内存时,可能会触发内存交换(swap),导致性能下降。
(二)内部原因
-
高复杂度命令
KEYS
:遍历所有键,时间复杂度为 O(N),可能导致性能瓶颈。SORT
:对数据进行排序,时间复杂度为 O(N log N),当数据量较大时会显著影响性能。SUNION
、ZUNIONSTORE
:聚合类命令,当操作的数据量较大时会消耗较多 CPU 资源。
-
BigKey 操作
- BigKey 是指存储了大量数据的 Key(如大型列表、集合或哈希)。对 BigKey 的操作(如
DEL
、SET
)可能会导致 Redis 阻塞,因为这些操作需要处理大量的数据。 - 示例:一个存储了 100 万条数据的列表(List),执行
DEL
命令时可能会阻塞 Redis 服务。
- BigKey 是指存储了大量数据的 Key(如大型列表、集合或哈希)。对 BigKey 的操作(如
三、慢查询的分析方法
(一)开启慢查询日志
通过设置 slowlog-log-slower-than
参数开启慢查询日志。例如,将阈值设置为 1 毫秒(1000 微秒):
CONFIG SET slowlog-log-slower-than 1000
在高并发场景下,建议将阈值设置得更低,以便更早地发现潜在问题。
(二)获取慢查询日志
使用 SLOWLOG GET
命令获取慢查询日志:
SLOWLOG GET
该命令会返回最近的慢查询记录,帮助开发者分析性能瓶颈。返回结果示例如下:
[{"id": 12345,"timestamp": 1680000000,"duration": 15000, // 命令执行时间(微秒)"command": "SORT mylist"},{"id": 12344,"timestamp": 1680000000,"duration": 12000,"command": "KEYS *"}
]
(三)监控工具
除了慢查询日志,还可以使用以下工具进行监控和分析:
-
INFO
命令:获取 Redis 服务器的状态信息,包括内存使用、命令执行速率等。INFO ALL
-
MONITOR
命令:实时显示所有到达 Redis 服务器的命令,但需谨慎使用,以免影响性能。MONITOR
-
第三方监控工具:如 Prometheus 和 Grafana,可以实现更全面的性能监控。
四、慢查询的优化策略
(一)优化命令使用
-
避免使用高复杂度命令
- 尽量避免使用
KEYS
、SORT
等命令,改用SCAN
或在客户端完成数据聚合。 - 示例:使用
SCAN
替代KEYS
。SCAN 0 MATCH user:* COUNT 100
- 尽量避免使用
-
分页处理大数据集
- 对于需要处理大量数据的操作,使用分页命令(如
LRANGE
)逐步获取数据。 - 示例:分页获取列表数据。
LRANGE mylist 0 99 # 获取前 100 条数据
- 对于需要处理大量数据的操作,使用分页命令(如
-
使用批量操作
- 对于多个操作,使用
MGET
、MSET
等批量命令减少网络往返。 - 示例:批量获取多个 Key 的值。
MGET key1 key2 key3
- 对于多个操作,使用
(二)优化 BigKey 操作
-
避免直接删除 BigKey
- 对于大型对象,可以将其拆分为多个小对象,减少单次操作的开销。
- 示例:将一个大型列表拆分为多个小列表。
-
使用渐进式删除
- 通过 Lua 脚本或客户端工具逐步删除 BigKey,避免一次性操作阻塞 Redis 服务。
- 示例:使用 Lua 脚本逐个删除列表中的元素。
local key = KEYS[1] local count = tonumber(ARGV[1]) for i = 1, count doredis.call("LPOP", key) end
(三)调整配置
-
调整慢查询日志参数
- 根据实际需求调整
slowlog-log-slower-than
和slowlog-max-len
参数。 - 示例:将慢查询日志的阈值设置为 1 毫秒,最大长度设置为 512 条。
CONFIG SET slowlog-log-slower-than 1000 CONFIG SET slowlog-max-len 512
- 根据实际需求调整
-
优化内存管理
- 合理设置
maxmemory
和maxmemory-policy
,避免内存不足导致的性能问题。 - 示例:限制 Redis 使用的最大内存,并设置淘汰策略。
maxmemory 4gb maxmemory-policy allkeys-lru
- 合理设置
(四)使用集群与分片
在高并发场景下,可以使用 Redis 集群或分片技术,将数据分散到多个节点,减轻单个实例的负载。
- Redis Cluster:支持自动分片和故障转移,适用于大规模分布式场景。
- Redis Sentinel:提供高可用性支持,适用于主从复制场景。
五、最佳实践
-
定期分析慢查询日志
- 定期检查慢查询日志,及时发现并优化性能瓶颈。
-
监控关键指标
- 关注内存使用率、CPU 使用率、命令执行速率等关键指标,及时调整配置。
-
使用连接池
- 减少频繁的连接开销,提升性能。
-
优化网络环境
- 确保 Redis 服务器与客户端之间的网络延迟最小。
-
预热缓存数据
- 在系统启动或业务高峰期前,预加载热点数据,避免缓存穿透和缓存击穿。
六、总结
Redis 慢查询是影响性能的重要因素之一。通过合理配置慢查询日志、优化命令使用、调整配置参数以及使用集群技术,可以有效提升 Redis 的性能。在实际应用中,建议定期监控和分析 Redis 的性能指标,及时发现并解决潜在问题,确保系统稳定运行。
希望本文对大家理解和优化 Redis 慢查询有所帮助。如果还有其他问题,欢迎在评论区交流!
参考文献:
Redis性能优化:全网最全的一篇 - CSDN博客
Redis慢查询分析优化 - CSDN博客
Redis 性能优化实战 - CSDN博客
详细分析Redis性能监控指标 附参数解释(全) - CSDN博客
【赵渝强老师】Redis的慢查询日志 - CSDN博客
如何监控Redis的性能和健康状况? - CSDN博客
Redis 慢查询优化方案 - JavaScript中文网
6.Redis的性能监控与问题排查 - CSDN博客
【赵渝强老师】监控Redis - 腾讯云
相关文章:
Redis系列之慢查询分析与调优
Redis 慢查询分析与优化:提升性能的实战指南 Redis 作为一款高性能的内存数据库,因其快速的数据读写能力和灵活的数据结构,被广泛应用于缓存、消息队列、排行榜等多种业务场景。然而,随着业务规模的扩大和数据量的增加࿰…...
分布式锁—2.Redisson的可重入锁一
大纲 1.Redisson可重入锁RedissonLock概述 2.可重入锁源码之创建RedissonClient实例 3.可重入锁源码之lua脚本加锁逻辑 4.可重入锁源码之WatchDog维持加锁逻辑 5.可重入锁源码之可重入加锁逻辑 6.可重入锁源码之锁的互斥阻塞逻辑 7.可重入锁源码之释放锁逻辑 8.可重入锁…...
大模型巅峰对决:DeepSeek vs GPT-4/Claude/PaLM-2 全面对比与核心差异揭秘
文章目录 一、架构设计深度解剖1.1 核心架构对比图谱1.2 动态MoE架构实现架构差异分析表 二、训练策略全面对比2.1 训练数据工程对比2.2 分布式训练代码对比DeepSeek混合并行实现GPT-4 Megatron实现对比 2.3 关键训练参数对比 三、性能表现多维评测3.1 基准测试全景对比3.2 推理…...
解决各大浏览器中http地址无权限调用麦克风摄像头问题(包括谷歌,Edge,360,火狐)后续会陆续补充
项目场景: 在各大浏览器中http地址调用电脑麦克风摄像头会没有权限,http协议无法使用多媒体设备 原因分析: 为了用户的隐私安全,http协议无法使用多媒体设备。因为像摄像头和麦克风属于可能涉及重大隐私问题的API,ge…...
Linux - 网络套接字
一、网络编程 1)地址结构 1. IP地址结构 struct in_addr:是用于表示 IPv4 地址 的结构体,定义在头文件 <netinet/in.h> 中。它的主要作用是存储一个 32 位的 IPv4 地址,通常与 struct sockaddr_in 一起使用。 struct in_a…...
Oracle数据库监听学习
官方文档: Net Services Administrators Guide Net Services Reference 一、动态注册 1.实例启动后,LREG 进程每分钟自动将服务名(service_name)注册到监听器中 也可以通过 alter system register 命令实现立刻注册。&#x…...
利率债、信用债、可转债区别与优势
利率债、信用债、城投债和可转债是债券市场的主要品种,它们在发行主体、风险收益特征和投资优势上各有不同。以下是它们的区别和优势: 1. 利率债 定义:利率债是由政府或政府支持的机构发行的债券,主要包括国债、政策性金融债&…...
C语言番外篇(4)------------------>VS环境下源码的隐藏
假设你是一个优秀的程序员,开发了一款功能十分强大的计算器。现在有一家做计算器的公司看上了你的功能,想通过每一年给你几万块钱使用这个功能。那我们是只提供一个头文件和静态库给他们使用这个功能就行呢?还是连同源代码一起给这家公司呢&a…...
Java集合
写在前面 本人在学习JUC过程中学习到集合和并发时有许多稀碎知识点 需要总结梳理思路与知识点 本文内容会涉及到ArrayList,HashMap以及扩容机制,ConcurrentHashMap,Synchronized,Volatile,ReentrantLock,…...
el-input 设置类型为number时,输入中文后光标会上移,并且会出现上下箭头
光标上移 设置 el-input 的 typenumber后,只能输入数字,输入中文后会自动清空,但是会出现一个问题:【光标会上移,如下图】 解决方法:修改样式 注意:需要使用样式穿透 :deep( ) /*解决el-in…...
迷你世界脚本自定义UI接口:Customui
自定义UI接口:Customui 彼得兔 更新时间: 2024-11-07 15:12:42 具体函数名及描述如下:(除前两个,其余的目前只能在UI编辑器内部的脚本使用) 序号 函数名 函数描述 1 openUIView(...) 打开一个UI界面(注意…...
解决windows npm无法下载electron包的问题
1.将nsis.zip解压到C:\Users\XXX\AppData\Local\electron-builder\Cache 2.将winCodeSign.zip解压到C:\Users\XXX\AppData\Local\electron-builder\Cache 3.将electron-v20.3.8-win32-ia32.zip复制到C:\Users\XXX\AppData\Local\electron\Cache 4.将electron-v20.3.8-win32-…...
Notepad++ 8.6.7 安装与配置全攻略(Windows平台)
一、软件定位与核心优势 Notepad 是开源免费的代码/文本编辑器,支持超过80种编程语言的高亮显示,相比系统自带记事本具有以下优势: 轻量高效:启动速度比同类软件快30%插件扩展:支持NppExec、JSON Viewer等200插件跨文…...
Unity InputField + ScrollRect实现微信聊天输入框功能
1、实现动态高度尺寸的的InputField 通过这两个部件就可以实现inputField的动态改变尺寸。 将inputField放入到scrollview当中作为子类 将scrollview 链接到UIChatInputField脚本中。 2、实现UIChatInputField //聊天输入框(类似wechat) [RequireComp…...
Java-servlet(三)Java-servlet-Web环境搭建(下)详细讲解利用maven和tomcat搭建Java-servlet环境
Java-servlet(三)Java-servlet-Web环境搭建(下)利用maven和tomcat搭建Java-servlet环境 前言一、配置maven阿里镜像二、利用IDEA创建maven文件创建maven文件删除src文件创建新的src模版删除example以及org文件 三、在第二个xml文件…...
在 CLion 中使用 Boost.Test 进行 C++ 单元测试
1. 安装 Boost.Test Boost.Test 是 Boost C 库的一部分,因此需要安装完整的 Boost 库。 方法 1:使用包管理器安装(推荐) Windows(vcpkg) 直接使用 CLion 集成的 vcpkg安装 boost-test: 也可…...
极狐GitLab 17.9 正式发布,40+ DevSecOps 重点功能解读【二】
GitLab 是一个全球知名的一体化 DevOps 平台,很多人都通过私有化部署 GitLab 来进行源代码托管。极狐GitLab 是 GitLab 在中国的发行版,专门为中国程序员服务。可以一键式部署极狐GitLab。 学习极狐GitLab 的相关资料: 极狐GitLab 官网极狐…...
文本处理Bert面试内容整理-BERT的预训练任务是什么?
BERT的预训练任务主要有两个,分别是 Masked Language Model (MLM) 和 Next Sentence Prediction (NSP)。这两个任务帮助BERT学习从大规模未标注文本中提取深层次的语义和上下文信息。 1. Masked Language Model (MLM)(掩码语言模型)...
【蓝桥杯】每天一题,理解逻辑(3/90)【Leetcode 快乐数】
闲话系列:每日一题,秃头有我,Hello!!!!!,我是IF‘Maxue,欢迎大佬们来参观我写的蓝桥杯系列,我好久没有更新博客了,因为up猪我寒假用自己的劳动换了…...
“深入浅出”系列之Linux篇:(10)基于C++实现分布式网络通信RPC框架
分布式网络通信rpc框架 项目是分布式网络通信rpc框架, 文中提到单机服务器的缺点: 硬件资源的限制影响并发:受限于硬件资源,聊天服务器承受的用户的并发有限 模块的编译部署难:任何模块小的修改,都导致整…...
Python的那些事第四十一篇:简化数据库交互的利器Django ORM
Django ORM:简化数据库交互的利器 摘要 随着互联网技术的飞速发展,Web开发越来越受到重视。Django作为一款流行的Python Web框架,以其高效、安全、可扩展等特点受到了广大开发者的喜爱。其中,Django ORM(对象关系映射)是Django框架的核心组件之一,它为开发者提供了一种…...
[自动驾驶-传感器融合] 多激光雷达的外参标定
文章目录 引言外参标定原理ICP匹配示例参考文献 引言 多激光雷达系统通常用于自动驾驶或机器人,每个雷达的位置和姿态不同,需要将它们的数据统一到同一个坐标系下。多激光雷达外参标定的核心目标是通过计算不同雷达坐标系之间的刚性变换关系(…...
初学STM32之简单认识IO口配置(学习笔记)
在使用51单片机的时候基本上不需要额外的配置IO,不过在使用特定的IO的时候需要额外的设计外围电路,比如PO口它是没有内置上拉电阻的。因此若想P0输出高电平,它就需要外接上拉电平。(当然这不是说它输入不需要上拉电阻,…...
【长安大学】苹果手机/平板自动连接认证CHD-WIFI脚本(快捷指令)
背景: 已经用这个脚本的记得设置Wifi时候,关闭“自动登录” 前几天实在忍受不了CHD-WIFI动不动就断开,一天要重新连接,点登陆好几次。试了下在网上搜有没有CHD-WIFI的自动连接WIFI自动认证脚本,那样我就可以解放双手&…...
powermock,mock使用笔记
介于日本的形式主义junit4单体测试,特记笔记,以下纯用手机打出来,因为电脑禁止复制粘贴。 pom文件 powermock-module-junit1.7.4 powermock-api-mokcito 1.7.4 spring-test 8 1,测试类头部打注解 RunWith(PowerMockRunner.class…...
大模型微调实战指南
1. 引言 在人工智能领域,大模型(如GPT、BERT、DeepSeek等)已经展现出了强大的通用能力。然而,要让这些模型在特定任务或领域中发挥最佳性能,微调(Fine-tuning)是必不可少的一步。本文将带你从零…...
计算机毕业设计Python+Django+Vue3微博数据舆情分析平台 微博用户画像系统 微博舆情可视化(源码+ 文档+PPT+讲解)
温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 作者简介:Java领…...
HTML第四节
一.复合选择器 1.后代选择器 注:1.后代选择器会选中后代所有的要选择的标签 2.儿子选择器 3.并集选择器 注:1.注意换行,同时选中多种标签 4.交集选择器 注:1.标签选择器放在最前面,例如放在类选择器的前面 2.两个选择…...
Kubernetes 的正式安装
1.基础的网络结构说明 软件路由器 ikuai 当然同一个仅主机模式 相当于在 同一个我们所谓的广播域内 所以相当于它们的几张网卡 是被连接起来的 为了防止出现问题 我们可以把第二块网卡临时关闭一下 2.准备路由器 ikuai 爱快 iKuai-商业场景网络解决方案提供商 (ikuai8.com)…...
VS2022C#windows窗体应用程序调用DeepSeek API
目录 一、创建DeepSeek API Key 二、创建窗体应用程序 三、设计窗体 1、控件拖放布局 2、主窗体【Form1】设计 3、多行文本框【tbContent】 4、提交按钮【btnSubmit】 5、单行文字框 四、撰写程序 五、完整代码 六、运行效果 七、其它 一、创建DeepSeek API Ke…...
7. 机器人记录数据集(具身智能机器人套件)
1. 树莓派启动机器人 conda activate lerobotpython lerobot/scripts/control_robot.py \--robot.typelekiwi \--control.typeremote_robot2. huggingface平台配置 huggingface官网 注册登录申请token(要有写权限)安装客户端 # 安装 pip install -U …...
阿里云操作系统控制台——ECS操作与性能优化
引言:在数字化时代,云服务器作为强大的计算资源承载平台,为企业和开发者提供了灵活且高效的服务。本文将详细介绍如何一步步操作云服务器 ECS,从开通到组件安装,再到内存全景诊断,帮助快速上手,…...
在飞腾E2000Q开发板上,基于RT-Thread操作系统,实现DeepSeek语音交互
目录 一 ,简介 二 ,流程与结果分享 1. Phytium E2000q demo开发板连接 2. RT-Thread Kconfig 配置选择 (1)驱动 (2)软件包 3. 主要代码 (1)录音功能,将录音结果保存…...
navicat导出postgresql的数据库结构、字段名、备注等等
1、执行sql语句 SELECT A.attnum AS "序号",C.relname AS "表名",CAST ( obj_description ( relfilenode, pg_class ) AS VARCHAR ) AS "表名描述",A.attname AS "字段名称",A.attnotnull as "是否不为null",(case when A…...
K8s 1.27.1 实战系列(三)安装网络插件
Kubernetes 的网络插件常见的有 Flannel 和 Calico ,这是两种主流的 CNI(容器网络接口)解决方案,它们在设计理念、实现方式、性能特征及适用场景上有显著差异。以下是两者的综合对比分析: 一、Flannel 和 Calico 1. 技术基础与网络实现 Flannel 核心机制:基于 Overlay …...
Python实现鼠标点击获取窗口进程信息
最近遇到挺无解的一个问题:电脑上莫名其妙出现一个白色小方块,点击没有反应,关也关不掉,想知道它和哪个软件有关还是显卡出了问题,也找不到思路,就想着要不获取一下它的进程号看看。 于是写了一个Python脚本…...
文件解析:doc、docx、pdf
1.doc解析 ubuntu/debian系统应先安装工具 apt-get install python-dev libxml2-dev libxslt1-dev antiword unrtf poppler-utils pstotext tesseract-ocr \ flac ffmpeg lame libmad0 libsox-fmt-mp3 sox libjpeg-dev swig pip install textract解析: import te…...
JDBC 完全指南:掌握 Java 数据库交互的核心技术
JDBC 完全指南:掌握 Java 数据库交互的核心技术 一、JDBC 是什么?为什么它如此重要? JDBC(Java Database Connectivity)是 Java 语言中用于连接和操作关系型数据库的标准 API。它允许开发者通过统一的接口访问不同的数…...
【STM32】STM32系列产品以及新手入门的STM32F103
📢 STM32F103xC/D/E 系列是一款高性能、低功耗的 32 位 MCU,适用于工业、汽车、消费电子等领域;基于 ARM Cortex-M3,主频最高 72MHz,支持 512KB Flash、64KB SRAM,适合复杂嵌入式应用,提供丰富的…...
esp32驱动带字库芯片TFT屏幕
前言 学习esp32单片机开发,前段时间在网上买了一块2.0寸TFT屏幕。 长这个样子,这个屏幕带汉字字库的硬件模块。我仔细看了一下这个字库模块上面写的字是25Q32FVSIG 1336 文档 卖家也发来了开发文档,是个doc文档,张这个样子。 开…...
[Python入门学习记录(小甲鱼)]第5章 列表 元组 字符串
第5章 列表 元组 字符串 5.1 列表 一个类似数组的东西 5.1.1 创建列表 一个中括号[ ] 把数据包起来就是创建了 number [1,2,3,4,5] print(type(number)) #返回 list 类型 for each in number:print(each) #输出 1 2 3 4 5#列表里不要求都是一个数据类型 mix [213,"…...
网络安全等级保护2.0 vs GDPR vs NIST 2.0:全方位对比解析
在网络安全日益重要的今天,各国纷纷出台相关政策法规,以加强信息安全保护。本文将对比我国网络安全等级保护2.0、欧盟的GDPR以及美国的NIST 2.0,分析它们各自的特点及差异。 网络安全等级保护2.0 网络安全等级保护2.0是我国信息安全领域的一…...
由麻省理工学院计算机科学与人工智能实验室等机构创建低成本、高效率的物理驱动数据生成框架,助力接触丰富的机器人操作任务
2025-02-28,由麻省理工学院计算机科学与人工智能实验室(CSAIL)和机器人与人工智能研究所的研究团队创建了一种低成本的数据生成框架,通过结合物理模拟、人类演示和基于模型的规划,高效生成大规模、高质量的接触丰富型机…...
leetcode15 三数之和
1.哈希法 为了避免重复 class Solution { public:vector<vector<int>> threeSum(vector<int>& nums) {set<vector<int>> temple;//使用 set 来存储符合条件的三元组,避免重复vector<vector<int>> out;//存放最终输…...
5c/c++内存管理
1. C/C内存分布 int globalVar 1; static int staticGlobalVar 1; void Test() {static int staticVar 1;int localVar 1;int num1[10] { 1, 2, 3, 4 };char char2[] "abcd";const char* pChar3 "abcd";int* ptr1 (int*)malloc(sizeof(int) * 4);i…...
蓝桥备赛(11)- 数据结构、算法与STL
一、数据结构 1.1 什么是数据结构? 在计算机科学中,数据结构是一种 数据组织、管理和存储的格式。它是相互之间存在一种 或多种特定关系的数据元素的集合。 ---> 通俗点,数据结构就是数据的组织形式 , 研究数据是用什么方…...
C++ 二叉搜索树代码
C 二叉搜索树代码 #include <iostream> using namespace std;template<typename T> struct TreeNode{T val;TreeNode *left;TreeNode *right;TreeNode():val(0), left(NULL), right(NULL){}TreeNode(T x):val(x), left(NULL), right(NULL){} };template<typena…...
Flask 打包为exe 文件
进入虚拟环境 激活虚拟环境 .venv\Scripts\activatepython build.py 完成标识图片 已经完成打包了,完成,下边是我自己记录的 这时候,我自己数据库文件夹下是没有sql 脚本的,要自己拷贝下这个路径下的文件 E:\开源文件\python-wi…...
JavaWeb-idea配置smart tomcat
一,安装smart tomcat插件 在插件市场搜索smart tomcat 点击安装,我已经安装成功。 二,web项目配置tomcat 点击这里,选择edit 进来之后,选加号 然后选tomcat 在这里,配置完毕后,点apply&…...
DELETE/ UPDATE/ INSERT 语句会自动加锁
在数据库系统中,DELETE、UPDATE 和 INSERT 语句通常会自动加锁,以确保数据的一致性和并发控制。具体的锁类型和效果取决于数据库的实现(如 MySQL、PostgreSQL 等)以及事务的隔离级别。以下是这些操作通常加锁的行为和效果…...