Mysql的SQL语句优化和事务隔离级别

2023-11-02

安装步骤

我的文章
https://blog.csdn.net/UnicornRe/article/details/117657298

mysql连接命令

mysql -uroot -p -h x.x.x.x -P 3306

备份:

mysqldump -h 地址 -u用户名 -p密码 otc_v1 >/x/x/backup.sql

优化

  1. 避免使用!=,<>
  2. 会用索引的符号
<<==>>=,BETWEEN,IN,x%
  1. 避免判断null
  2. 避免使用or
select * from teacher where id=1 UNION all select * from teacher where id=2
# 使用UNION时,MySQL会把结果集中重复的记录删掉,而使用UNION ALL ,MySQL会把所有的记录返回,且效率高于UNION
  1. 避免前置%x,使用 x%
  2. 尽量用between代替in ,not in
  3. 避免在 ‘=’ 左边使用算数运算
  4. 联表查询
<!-- 方案 1
        select c.*,p.name parentName
        from sys_menus c left join sys_menus p
        on c.parentId=p.id
        -->
<!-- 方案 2 (推荐)-->
        select c.*,(
        select p.name
        from sys_menus p
        where c.parentId=p.id
        ) parentName
        from sys_menus c
# 联表举例
select 
teacher.name,(select teacher_class.class from teacher_class where teacher_class.teacherId=teacher.id) 
from teacher where teacher.id=1

事务4种特性和4种级别

特性

原子性(Atomicity):一个事务必须被视为一个不可分割的单元,对于其数据修改,要么全都执行,要么全都不执行
一致性(Consistency):数据库总是从一种状态切换到另一种状态,事务在完成时,必须使所有的数据保持一致的状态
隔离性(Isolation):由并发事务所做的修改必须与任何其他并发事务所做的修改隔离
持久性(Durablity):一旦事务提交,所做修改永久保存在数据库

隔离级别
1-4效率依次降低

1Read uncommitted (读未提交):最低级别,任何情况都无法保证
2Read committed (读已提交):可避免脏读的发生。
3Repeatable read (可重复读):可避免脏读、不可重复读的发生。
4Serializable (串行化):可避免脏读、不可重复读、幻读的发生
#设置级别
SET SESSION TX_ISOLATION='READ-COMMITTED';
BEGIN;
#事务内容...
commit;/rollback;

脏读&不可重复读&幻读

脏读

读取到其他事务未提交的数据

不可重复读

不可重复读指的是在同一事务内,不同的时刻读到的同一批数据可能是不一样的,可能会受到其他事务的影响,
比如其他事务改了这批数据并提交了。通常针对数据**更新(UPDATE)**操作。

幻读

幻读是针对数据**插入(INSERT)**操作来说的。假设事务A对某些行的内容作了更改,但是还未提交,此时
事务B插入了与事务A更改前的记录相同的记录行,并且在事务A提交之前先提交了,而这时,在事务A中查询,
会发现好像刚刚的更改对于某些数据未起作用,但其实是事务B刚插入进来的,让用户感觉很魔幻,感觉出现了
幻觉,这就叫幻读。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Mysql的SQL语句优化和事务隔离级别 的相关文章

随机推荐

  • JVM内存区域划分Eden Space、Survivor Space、Tenured Gen,Perm Gen解释

    jvm区域总体分两类 heap区和非heap区 heap区又分 Eden Space 伊甸园 Survivor Space 幸存者区 Tenured Gen 老年代 养老区 非heap区又分 Code Cache 代码缓存区 Perm Ge
  • 使用apt-get安装Nginx

    Ubuntu 18 04 Nginx 1 14 0 一直想在Linux上安装Nginx 一直没找到契机 很大原因是自己不熟悉 Ubuntu没安装好吧 今天下午学习了Ubuntu安装软件的一些资料 那么 就从Nginx的安装开始吧 apt g
  • 哈希算法插入删除时间复杂度O(1)的疑问

    哈希表的插入和删除平均时间为什么是O 1 末尾的插入和删除是O 1 最坏情况的插入删除是O n 那平均为什么还是O 1 呢 看了几篇文章 隐约有了答案 但还不是很确定 可能这是文字上的一种理解问题 我个人的理解 哈希表是数据 链表的组合 除
  • JavaScript-冻结对象

    文章目录 1 冻结对象 2 冻结判断 3 深冻结和浅冻结 1 冻结对象 Object freeze use strict let initialData a 123 initialData a 234 console log initial
  • 极链科技目标检测获Open Images第一,ECCV 2020挑战赛第二

    近日 极链科技在Google AI推出的2020 Open Images Challenge大规模目标检测竞赛和国际顶会ECCV 2020 VIPriors挑战赛目标检测赛道中分别获得第一名 第二名的佳绩 目标检测算法是计算机视觉任务中的重
  • Echarts 监听鼠标右键或者双击

    1 监听 contextmenu 官方文档 注意切换引用控件所对应版本的文档 ECharts 中的事件和行为 引用官方文档示例代码 基于准备好的dom 初始化ECharts实例 var myChart echarts init docume
  • Midjourney AI绘画工具使用保姆级教程

    系列文章目录 之后补充 文章目录 系列文章目录 写在前面 一 Midjourney是什么 二 使用步骤 1 完成Discord注册 2 打开Midjourney官网 3 开始画图 后记 写在前面 据悉 自3月30日 Midjourney已叫
  • sql语句中使用in、not in 查询时,注意条件范围中的null值处理事项

    emp表中的数据 1 使用in的时候 忽略为null的 不会查询出comm为null的数据 select from emp e where e comm in 300 500 null 2 使用not in的时候 如果 not in后面的选
  • CSS基础学习--26 渐变(Gradients)

    CSS3 渐变 gradients 可以让你在两个或多个指定的颜色之间显示平稳的过渡 以前 你必须使用图像来实现这些效果 但是 通过使用 CSS3 渐变 gradients 你可以减少下载的时间和宽带的使用 此外 渐变效果的元素在放大时看起
  • AcWing 897. 最长公共子序列(线性dp)

    题目链接 点击查看 题目描述 给定两个长度分别为 N 和 M 的字符串 A 和 B 求既是 A 的子序列又是 B 的子序列的字符串长度最长是多少 输入输出格式 输入 第一行包含两个整数 N 和 M 第二行包含一个长度为 N 的字符串 表示字
  • 如何用css实现带√三角形

    简介 最近切页面切到一个类似于京东plus会员的页面 当时刚拿到页面的时候人都有些懵 毕竟我是一个前端小白 这种电商的页面还没有这么做过 参考页面 后来经过一段时间的学习发现css的伪类很强大 下面是实现背景加三角形内含 的代码 selec
  • unity单例模板

    Unity 单例模板类 unity 不继承Mono的单例模板 代码片段 unity 不继承Mono的单例模板 代码片段 public class BaseManager
  • Java内嵌数据库Derby 语法(3)

    主键 唯一键包含索引 主键包含唯一键 索引 非空 唯一键包含索引 可空或非空 数据库需要与执行服务的在同个目录下 唯一键 create table app tyu primarykey int primary key com no int
  • 无人驾驶汽车系统入门(十三)——正态分布变换(NDT)配准与无人车定位

    无人驾驶汽车系统入门 十三 正态分布变换 NDT 配准与无人车定位 定位即确定无人车在这个世界中的哪个位置 是无人驾驶技术栈中必不可少的一部分 对于无人车而言 对定位的要求极高 一般情况下 我们希望我们的无人车能够达到 厘米级 的定位精度
  • 【数据结构 C语言版】树,二叉树,线索二叉树,哈夫曼树

    树的概念 根 如下图中 树形结构的 A 子树 每个节点下又称为一棵子树 如 B 为 A 的子树 在一棵树中 节点被定义为他的每一个 子树 根节点的前驱 而他每一个子树的根节点就是他的后继 在描述属性树形结构时 人们往往使用家族称谓 如 把
  • Mysql - 为啥不建议UUID当主键

    1 不能当主键的原因 MySQL写入数据时 会把数据存放到索引页中 使用UUID作为主键 新行的主键值不一定比之前的主键值大 所以innoDb无法做到总是把新行插入到索引的最后 而需要为新行寻找合适的位置来分配新的空间 因为是B 树方式存储
  • 本周 RocektMQ社区活动

    本周 RocektMQ社区邀请了陈厚德老师进行源码直播分享 陈老师曾就职于腾讯 盛大 斗鱼等知名互联网公司 现就职于尚德机构 分享相关信息 直播方式 钉钉群直播方式 群号 21791227 分享题目 RocketMQ同步 异步刷盘机制 分享
  • 微信小程序日历签到,拿走即用~

    参考了小友那个谁的 具体也忘记了 改be改be即用了 因为是日历 里面有一个算空格的地方 嘻嘻 也是小友提供的 再次感谢 html
  • AngularJS 1.4.6 实践 一 —— 单页应用登录验证

    AngularJS 1 4 6 实践 一 单页应用登录验证 一 多视图路由及路由嵌套 1 多视图路由 2 路由嵌套 二 路由检测登录状态 1 添加路由改变监听事件 2 非常重要 解决未知路径无限循环 三 整体代码 1 index html
  • Mysql的SQL语句优化和事务隔离级别

    文章目录 安装步骤 mysql连接命令 优化 事务4种特性和4种级别 脏读 不可重复读 幻读 安装步骤 我的文章 https blog csdn net UnicornRe article details 117657298 mysql连接