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

mysql 细分

索引选择性 = 索引列的唯一值数量 / 表中的总行数

mysql如何优化-CSDN博客

批量问题

批处理默认是逐条发送 SQL 到数据库的,没有充分利用数据库提供的原生批处理能力,需要额外的配置来启用真正的批处理支持,如使用ExecutorType.BATCH

自定义injector 或者 mapper里面自己写sql

执行过程

  • MySQL服务器通过网络接口监听来自客户端的连接请求
  • 查询解析器解析SQL语句,检查语法是否正确,生成一个内部表示结构(如解析树
  • 基本的语义检查,如验证表和列是否存在 类型是否匹配 权限 
  • 查询优化器会对解析树进行转换和优化,以找到执行该查询的最有效方法

          优化器可能会使用批量插入优化、调整索引策略等,减少磁盘I/O和网络通信的开销

  • 估不同的执行计划,(统计信息/优化规则)并选择成本最低的那个
  1. 分析sql要做什么 表连接过滤条件,查看物理结构 类型 约束
  2. 优化器多个执行路径,扫描顺序 连接方法(嵌套 哈希连接) 使用索引
  3. 成本估计CPU IO 内存(表行数/列值分布)          
  • 基于优化器决定,生成一个详细的执行计划,描述如何执行SQL语句

           如何访问表、使用的索引、排序 分组 连接顺序、过滤条件等

  • 开始执行批量操作,批量可能使用内存
  • 批量插入,可能会使用“批量插入缓冲”技术,多个组合成一次较大的磁盘写入,减少I/O
  • 批量更新或删除,按照执行计划中的步骤,逐行或逐块地处理符合条件的记录
  • 管理并发访问,维护事务的一致性,确保在发生错误时能够回滚到一致的状态

             隔离级别,可能会使用行锁、表锁或其他锁定机制来防止多个事务同时修改同一数据

             各种并发控制策略来优化性能,例如多版本并发控制(MVCC)

             记录事务日志

  • 生成一个结果集,其中包含受影响的行数、错误信息(如果有)等 网络接口发送给客户端
  • 释放执行该操作期间占用的所有资源,包括内存、锁等
  • 不再发送其他请求,关闭连接,最小连接数可能会空闲

中间插一个事务吧 spring事务-CSDN博客 自家博客随便拿

事务隔离级别:

    读未提交(Read Uncommitted)、读已提交(Read Committed)、可重复读(Repeatable Read)​

事务传播行为:

    propagation_requires_new:开启新事物,外层和内层互不影响

    propagation_required:存在则加入,否则新建

    propagation_supports:存在则加入,无则无

    propagation_mandatory:存在则加入,无则报错

    propagation_not_supported:非事务执行,挂起事务

    propagation_never:存在事务报错

    propagation_nested:有则运行在一个嵌套事务中,savepoint,嵌套事务可独立当前事务单独提交/回滚,无则required算,nestedTransactionAllowed=true;外层事务失败回滚内层,内层不影响外层

MVCC

    是一种用来解决读写冲突的无锁并发控制

快照读 当前读

三个隐式字段trxId事务id,rollptr回滚指针,rowid隐藏主键,undo日志read view三个组件

undolog删除:快照读或事务回滚不涉及该日志时,才会被purge线程统一清除

   数据更新和删除时只设置一下老记录的deletedbit,后面由purge统一清除

修改  加上  排他锁    ,拷贝到undolog中  已经有的话 链表头部  

readView 事务执行快照读 生成一个数据系统当前快照,记录并维护系统当前活跃事务id trx_list

  • 被修改数据的最新纪录中的trxId,当前其他活跃事务id比较  不符合   回滚指针 比较事务id
  • 事务id与uplimitid比较,是否小于 ? 是否大于等于lowlimitid,是否在trx_list中 ==》可见性
  • RR级别 第一次快照读创建的
  • RC每次快照读 新生成快照和readView

http://www.lryc.cn/news/345853.html

相关文章:

  • 数据驱动实战二
  • 解决参考文献自动生成标号,换行时自动缩进
  • 网络安全专业岗位详解+自学学习路线图
  • mybatisPlus一个事务中切换数据源概述
  • 如何在Android手机上恢复已删除的视频?
  • 【项目实战】使用Github pages、Hexo如何10分钟内快速生成个人博客网站
  • 大数据中服役新数据节点和退役旧节点步骤(hive,hadoop)
  • 数论:不定方程的引入
  • 数据中心法
  • pdffactory pro8.0虚拟打印机(附注册码)
  • 处理用户输入
  • 在装有centOS7的虚拟机上进行MySQL的安装部署
  • 【vivado】debug相关时钟及其约束关系
  • 什么是HTTP/2?
  • 【ChatGPT with Date】使用 ChatGPT 时显示消息时间的插件
  • STM:TIM定时器——定时中断
  • jetson tx2 nx实现在ros1中yolov5实现
  • 【SpringBoot笔记43】SpringBoot应用程序集成spring-boot-admin监控工具
  • 与队列和栈相关的【OJ题】
  • Unity编辑器扩展
  • 【kettle】kettle访问数据库系列文章及视频地址(更新中)
  • 共赴科技盛会“2024南京智博会”11月在南京国际博览中心召开
  • 刷代码随想录有感(62):修建二叉搜索树
  • AVL树的旋转
  • C++(动态规划之拆分整数)
  • unix C之环境变量
  • Flutter实战记录-协作开发遇到的问题
  • Linux 安装JDK和Idea
  • c#绘制渐变色的Led
  • LifeCycle之ProcessLifeCycleOwner