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

Mysql使用规范(纯技术和实战建议)

1、事务隔级别:

(强制):Repeatable-Read(重复读),且不能在会话操作时临时开启隔离级别。

注:

Repeatable-Read(重复读)隔离级别解决不了幻读。
可用 show variables like 'tx_isolation'; 查看当前mysql的隔离级别,事务隔离级别如下:

  • Read-Uncommitted;
  • Read-Committed;
  • Repeatable-Read(默认);
  • Seriaizable;

2、数据库字符集&表字符集&字段字符集:

  1. 数据库字符集(强制):必需指定字符集;
  2. 表字符集(强制):必需指定字符集;
  3. 字段字符集(强制):必需指定字符集;

注:
mysql的字符集优先级,数据库字符集 < 表字符集 < 表字段字符集;
mysql Utf8 3字节,Utf8mb4 4字节;

3、建表:

  1. 存储引挚(强制):必需明确指定存储引挚,通常是InnoDB存储引擎;
  2. 分库分表非强制):单表超过1000万行,或超过5GB,考虑分库分表;
  3. 数据保存策略(强制):必需明确历史数据保存多久;
  4. 表需要有主键(非强制),且最好是自增主键;
  5. 表限制创建三个以上索引(非强制),超过可考虑联合索引,联合索引和多索引查询使用要考虑索引失效;
  6. 表列数量限制(非强制):表列数量不要超过30个;

4、开发操作数据库:

  1. 组件使用(非强制):java语言用Mybatis操作数据库;
  2. 连结数池非强制):不要超过100个;
  3. 禁止操作强制):禁止2张以上表join,禁止使用存储过程,禁止使用触发器,禁止使用定时任务
  4. 查询结果集缓冲区大小非强制):涉及到select查询,要明确返回结果集大小,防止网络大量IO和内存崩掉,这里有两级数据缓存,1:数据库本身缓存大小;2、代码进程接结果集缓存大小。同时使用sql in语句小心超1000限制,很多数据库默认不支持有限制,如:select * from table r1 in(1,2,3,...,1000);
  5. sql执行计划强制):sql涉及到索引主键的使用必需用EXPLAIN查看是否生效?
  6. 禁止存储大文件和大图片强制)
  7. 批量插入非强制):批量插入超过1000,分批处理,建议Mybatis操作数据库手动获取Jdbc实现批量插入,代码如:

5、事务:

5.1、Spring编程事务传播性(非强制):

spring编程事务,即我们Java+Spring+db编程时开启事方式时机

建议使用:Propagation.REQUIRED传播性。如果当前存在事务,则加入该事务,如果当前不存在事务,则创建一个新的事务。对应:@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)

注:Spring事务传播性:

  1. Propagation.NESTED:和 Propagation.REQUIRED 效果一样;
  2. Propagation.NEVER:以非事务的方式运行,如果当前存在事务,则抛出异常;
  3. Propagation.NOT_SUPPORTED:以非事务的方式运行,如果当前存在事务,暂停当前的事务;
  4. Propagation.REQUIRES_NEW:重新创建一个新的事务,如果当前存在事务,暂停当前的事务;
  5. Propagation.MANDATORY:如果当前存在事务,则加入该事务;如果当前不存在事务,则抛出异常;
  6. Propagation.SUPPORTS:如果当前存在事务,则加入该事务;如果当前不存在事务,则以非事务的方式继续运行;
  7. Propagation.REQUIRED:如果当前存在事务,则加入该事务,如果当前不存在事务,则创建一个新的事务(默认);

5.2、Spring编程事务回滚类型(非强制):

编程开启事务时,明确事务的异常回滚类型。对应:@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)

5.3、事务开启(强制):

事务开启需要从三个方向考虑,1、事务悲观和乐观;2、事务的颗粒度;3、事务失效;因此从三个方向进行限定开发规范。

5.3.1、事务悲观和乐观:

根据对代码执行效率的追求,和业务实现的可靠性,综合考虑事务使用悲观锁乐观锁

5.3.2、事务的颗粒度:

事务的颗粒度,从4个方面考虑:

  1. 事务开启Hold住的时长,与这段被Hold住业务代码实现有效时长的比值,比值越小效率越高。如:代码逻辑,第一步:更新一条记录,仅1ms;第二步:做了一个网络IO,或者磁盘IO,用了5s,这就是一个极其不合理的比值;
  2. 事务开启Hold住的时长,会引起锁升级和增大数据库死锁的概率;
  3. 事务开启涉及批量操作(insert/update/delete),会引起锁升级和增大数据库死锁的概率;
  4. 事务Hold住的时长太长,可能会超时自动释放失效,同时长太长也会引起数据库死锁;

设计和编码落地时需从以上三人方面、事务可告性综合考虑,是否使用手动事务?或者注解事务(如开启,建议在函数方法开启)?

5.3.3、事务失效:

事务失效指开启了事务,事务确不失效,常见有以下几种可能,开发设计编码需要考虑:

  1. 注解不对导致失效;
  2. 跨线程方法调用导致失效;
  3. 多数据源导致失效;

 

相关文章:

Mysql使用规范(纯技术和实战建议)

1、事务隔级别: &#xff08;强制&#xff09;&#xff1a;Repeatable-Read&#xff08;重复读&#xff09;&#xff0c;且不能在会话操作时临时开启隔离级别。 注&#xff1a; Repeatable-Read&#xff08;重复读&#xff09;隔离级别解决不了幻读。 可用 show variables l…...

Netty源码解读-EventLoop(二)

一、简介 NioEventLoop的重要组成&#xff1a;Selector、线程、任务队列&#xff0c;他既会处理io事件&#xff0c;也会处理普通任务和定时任务. 1.下面是Selector&#xff0c;注意有两个哦后面会讲 2.下面的爷爷类提供的Thread变量&#xff0c;其实下面发excutor用的就是这个…...

OSI模型详解

今天&#xff0c;我们详解OSI&#xff08;Open System Inter-connection Reference Model&#xff09;模型&#xff0c;来看看工业物联网的网络互联和数据互通。 OSI模型 1984年&#xff0c;国际标准化组织&#xff08;International Organization for Standardization&#…...

Share Creators完成500万美元融资,以工具化手段帮助企业从数字资产管理中解放

近日&#xff0c;总部位于旧金山湾区的初创公司Share Creators宣布完成了新一轮500万美元的融资&#xff0c;投资方为五源资本和福昕PDF。本轮融资主要用于扩大客户基础&#xff0c;并加速在美国、欧洲和亚洲的业务发展。近几年&#xff0c;企业内容及数字资产管理全球市场正在…...

几个Base64编码工具,也有蹊跷

起因 需求&#xff1a;对一段内容进行base64加密&#xff0c;然后通过url的get请求进行发送到后台&#xff0c;由于加密的内容比较少&#xff0c;base64串也不是很长&#xff0c;我认为此方案可行。 于是找了三个base64编码的在线工具&#xff0c;分别是&#xff1a; 平台1&…...

Python|每日一练|排序|递归|字符串|数组|动态规划|单选记录:以特殊格式处理连续增加的数字|正则表达式匹配|地下城游戏

1、以特殊格式处理连续增加的数字&#xff08;排序&#xff09; 贡献者&#xff1a;EricLao 给出一串数字&#xff0c; 程序要把数字按照这样的格式输出&#xff0c;把连续增加的数字用 [x-y] 的形式表示&#xff0c;只显示这一组顺序数字的首位两个数字&#xff0c;不连续增…...

Spring Cloud微服务网关Gateway组件

目录 网关简介 什么是Spring Cloud Gateway Spring Cloud Gateway 功能特征 核心概念 工作原理 Spring Cloud Gateway快速开始 环境搭建 集成Nacos 路由断言工厂&#xff08;Route Predicate Factories&#xff09;配置 自定义路由断言工厂 过滤器工厂&#xff08; …...

cluster nodes(集群节点)

CLUSTER NODES 复制 自3.0.0起可用。 时间复杂度&#xff1a; O&#xff08;N&#xff09;其中N是 Cluster 节点的总数 Redis 集群中的每个节点都有其当前集群配置的视图&#xff0c;由已知节点的集合给出&#xff0c;我们与这些节点的连接状态&#xff0c;它们的标志&…...

【Android学习】下载jar慢和gradle慢的情况

目录 问题出现的原因 解决方法 解决Gradle下载问题&#xff1a;手动安装 解决jar包下载慢问题&#xff1a;更改下载源 问题出现的原因 国内访问谷歌被墙导致访问速度慢或者干脆无法下载 解决方法 解决Gradle下载问题&#xff1a;手动安装 访问官网Gradle | Release Candi…...

下一个排列-力扣31-java

一、题目描述整数数组的一个 排列 就是将其所有成员以序列或线性顺序排列。例如&#xff0c;arr [1,2,3] &#xff0c;以下这些都可以视作 arr 的排列&#xff1a;[1,2,3]、[1,3,2]、[3,1,2]、[2,3,1] 。整数数组的 下一个排列 是指其整数的下一个字典序更大的排列。更正式地&…...

前端面试题

1.HTTP request报文结构是怎样的 1.首行是Request-Line包括&#xff1a;请求方法&#xff0c;请求URI&#xff0c;协议版本&#xff0c;CRLF&#xff08;换行符&#xff09; 2.首行之后是若干行请求头&#xff0c;包括general-header&#xff0c;request-header或者entity-hea…...

jsp游戏门户网站系统Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 jsp 游戏门户网站系统 是一套完善的web设计系统&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为 TOMCAT7.0,Myeclipse8.5开发&#xff0c;数据库为Mysql&#xff0c;使…...

Git与IDEA强强联合(HTTPS协议连接)

最近在写项目的时候&#xff0c;在台式机和笔记本之间频繁切换&#xff0c;竟然还是用qq传压缩包&#xff0c;我自己都感觉无语&#xff0c;有git这样强大的版本管理工具&#xff0c;我竟然没想起来。然后也没有相关的博文就想来更新一篇。 那么如何使idea和git强强联合呢&…...

leetcode 第二题:两数相加-C语言实现

题目地址 备注&#xff1a; 不要忘记最后一个进位的可能。可以使用typedef&#xff0c;来简化struct的书写 代码实现&#xff1a; #include<stdio.h> #include<stdlib.h>struct listNode {int val;struct listNode* next; };// 使用typedef typedef struct lis…...

【人工智能】PTP网络时钟服务器在智能驾驶里的重要性

【人工智能】PTP网络时钟服务器在智能驾驶里的重要性 【人工智能】PTP网络时钟服务器在智能驾驶里的重要性 一辆宣称具备L4/L5自动驾驶功能的车辆&#xff0c;如果多个激光雷达之间的时间同步不够精确&#xff1f;如果传感器感知数据通过以太网传输到智驾域控制器的延迟不可控…...

【蓝桥杯集训3】二分专题(3 / 5)

目录 二分模板 1460. 我在哪&#xff1f; - 二分答案 哈希表 1221. 四平方和 - 哈希表 / 二分 1、哈希表 2、二分 自定义排序 1227. 分巧克力 - 113. 特殊排序 - 二分模板 l r >> 1 —— 先 r mid 后 l mid1 —— 寻找左边界 —— 找大于某个数的最小值lr…...

在成都的哪个培训机构学习Java好呢?

自从小课06年进入成都这个IT培训市场以来&#xff0c;短短十几年&#xff0c;招过很多学员&#xff0c;也见证过很多机构的起起落落。心中有万分的感慨&#xff0c;总结下来有这几点分享给大家&#xff0c;在选择培训机构时能看清本质&#xff0c;找到适合自己靠谱的机构学Java…...

传输层重要协议之UDP协议和TCP协议详解

更多关于UDP协议和TCP协议请移步官网&#xff1a;https://www.rfc-editor.org/standards#ISUDP标准协议文档-RFC 768TCP标准协议文档-RFC 793UDP协议详解UDP协议的特点&#xff1a;无连接、不可靠传输、面向数据报和全双工。UDP协议报文结构&#xff1a;关于端口号&#xff1a;…...

BNB Greenfield 成存储赛道“新贵”,BNB 生态的野心与破局

“从BNB Beacon Chain&#xff0c;到BNB Chain&#xff0c;再到BNB Greenfield &#xff0c;三位一体的 BNB 生态格局正式形成。 ”在今年的2月1日&#xff0c;币安发布了分布式存储链BNB Greenfield&#xff0c;根据白皮书信息&#xff0c;它的特别之处在于其不仅具备基于SP&a…...

【SQL开发实战技巧】系列(十六):时间类型操作(上):日、月、年、时、分、秒之差及时间间隔计算

系列文章目录 【SQL开发实战技巧】系列&#xff08;一&#xff09;:关于SQL不得不说的那些事 【SQL开发实战技巧】系列&#xff08;二&#xff09;&#xff1a;简单单表查询 【SQL开发实战技巧】系列&#xff08;三&#xff09;&#xff1a;SQL排序的那些事 【SQL开发实战技巧…...

XML Group端口详解

在XML数据映射过程中&#xff0c;经常需要对数据进行分组聚合操作。例如&#xff0c;当处理包含多个物料明细的XML文件时&#xff0c;可能需要将相同物料号的明细归为一组&#xff0c;或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码&#xff0c;增加了开…...

零门槛NAS搭建:WinNAS如何让普通电脑秒变私有云?

一、核心优势&#xff1a;专为Windows用户设计的极简NAS WinNAS由深圳耘想存储科技开发&#xff0c;是一款收费低廉但功能全面的Windows NAS工具&#xff0c;主打“无学习成本部署” 。与其他NAS软件相比&#xff0c;其优势在于&#xff1a; 无需硬件改造&#xff1a;将任意W…...

css实现圆环展示百分比,根据值动态展示所占比例

代码如下 <view class""><view class"circle-chart"><view v-if"!!num" class"pie-item" :style"{background: conic-gradient(var(--one-color) 0%,#E9E6F1 ${num}%),}"></view><view v-else …...

突破不可导策略的训练难题:零阶优化与强化学习的深度嵌合

强化学习&#xff08;Reinforcement Learning, RL&#xff09;是工业领域智能控制的重要方法。它的基本原理是将最优控制问题建模为马尔可夫决策过程&#xff0c;然后使用强化学习的Actor-Critic机制&#xff08;中文译作“知行互动”机制&#xff09;&#xff0c;逐步迭代求解…...

rknn优化教程(二)

文章目录 1. 前述2. 三方库的封装2.1 xrepo中的库2.2 xrepo之外的库2.2.1 opencv2.2.2 rknnrt2.2.3 spdlog 3. rknn_engine库 1. 前述 OK&#xff0c;开始写第二篇的内容了。这篇博客主要能写一下&#xff1a; 如何给一些三方库按照xmake方式进行封装&#xff0c;供调用如何按…...

1688商品列表API与其他数据源的对接思路

将1688商品列表API与其他数据源对接时&#xff0c;需结合业务场景设计数据流转链路&#xff0c;重点关注数据格式兼容性、接口调用频率控制及数据一致性维护。以下是具体对接思路及关键技术点&#xff1a; 一、核心对接场景与目标 商品数据同步 场景&#xff1a;将1688商品信息…...

如何为服务器生成TLS证书

TLS&#xff08;Transport Layer Security&#xff09;证书是确保网络通信安全的重要手段&#xff0c;它通过加密技术保护传输的数据不被窃听和篡改。在服务器上配置TLS证书&#xff0c;可以使用户通过HTTPS协议安全地访问您的网站。本文将详细介绍如何在服务器上生成一个TLS证…...

.Net Framework 4/C# 关键字(非常用,持续更新...)

一、is 关键字 is 关键字用于检查对象是否于给定类型兼容,如果兼容将返回 true,如果不兼容则返回 false,在进行类型转换前,可以先使用 is 关键字判断对象是否与指定类型兼容,如果兼容才进行转换,这样的转换是安全的。 例如有:首先创建一个字符串对象,然后将字符串对象隐…...

使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台

🎯 使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台 📌 项目背景 随着大语言模型(LLM)的广泛应用,开发者常面临多个挑战: 各大模型(OpenAI、Claude、Gemini、Ollama)接口风格不统一;缺乏一个统一平台进行模型调用与测试;本地模型 Ollama 的集成与前…...

Python ROS2【机器人中间件框架】 简介

销量过万TEEIS德国护膝夏天用薄款 优惠券冠生园 百花蜂蜜428g 挤压瓶纯蜂蜜巨奇严选 鞋子除臭剂360ml 多芬身体磨砂膏280g健70%-75%酒精消毒棉片湿巾1418cm 80片/袋3袋大包清洁食品用消毒 优惠券AIMORNY52朵红玫瑰永生香皂花同城配送非鲜花七夕情人节生日礼物送女友 热卖妙洁棉…...