SQL调优、事务、mysql数据结构

本文探讨了数据库优化的出发点,包括减少响应时间和提高吞吐量,涉及客户端SQL查询优化、服务端Mysql配置调整和架构层面的表结构与存储引擎选择。还介绍了应用层解决方案如缓存、限流、读写分离和分库分表,以及事务的四大属性和执行流程,最后提及MySQL中的B+树索引结构及其原因。
摘要由CSDN通过智能技术生成

1.调优的出发点和从那几个方面进行优化

        出发点:

                减少响应时间,提高吞吐量

        三个维度优化:

                客户端优化:sql语句:通常业务中最常见的就是sql查询速度慢的问题,这个需要我们 用expiain去排查慢查询问题

                服务端优化:Mysql配置:mysql配置文件中支持很多配置选项,同时很多重要配置也帮 助我们设置了默认值,通常时无需修改就可以正常部署,但是这也代表这默认配置并不是适合当前项目及系统的最佳配置。

                架构层优化:表结构和存储引擎:我们都知道数据库表结构设计对于业务来说时非常重 要的,良好的表结构设计时高性能的基石,同时Mysql也支持多种储存引擎,每种存储引擎都有自己的特点,针对不同的的表使用不同存储引擎

2.调优的方案有哪些

        应用层方案:相对于来说把所有压力都给到数据库,其实我们在应用层还有很多操作可以让数据库减轻压力,也是一种对于数据库的调优,比如缓存,限流,异步

        读写分离: 通过主库写,从库读,不但解决数据库事务隔离级别中的读写锁的竞争冲突,还有一有效分摊了数据库压力,不过也会带来数据延迟问题
        分库分表: 按照业务去拆分数据库为垂直分库,把单张表按照一定规则拆分到不同
表中为水平分表,这样拆分操作可以有效减少单个数据库结点的访问压力,已经单个表
数据的存储压力
        高可用方案: 如果数据库意外宕机了,或者某个结点搞了,无法提供访问,就会导
致吞吐量下降,甚至无法响应,所有选择好的高可用方案也是提高数据线性能的基础
3.事务的属性和执行流程
      

         一般来说事务有四个标准属性:

        1.原子性:一个事务中的所有 SQL 语句,要么全部执行成功,要么全部执行失败,不会结束在中间的某个环节。事务在执行过程中发生错误,会被回滚(Rollback)到事务开始前的状态,就像这个事务从来没有执行过一样。

        2.一致性:在事务开始之前和事务结束以后,数据库的完整性没有被破坏。这表示写入的数据必须完全符合所有的预设规则,其中包含数据的精确度、串联性以及后续数据库可以自发性地完成预定的工作。

        3.隔离性:

数据库允许多个并发事务同时对其数据进行读写和修改的能力,隔离性可以防止多个事务并发执
行时由于交叉执行而导致数据的不一致。事务隔离分为不同级别,包括读未提交(Read
uncommitted)、读提交(read committed)、可重复读(repeatable read)和串行化
(Serializable)。

        4.持久性

        事务处理结束后,对数据的修改就是永久的,即便系统故障也不会丢失。

        事务执行流程:

        1) 开始事务
        2) 提交事务
        3) 回滚事务
        4) 回滚标记点
        与事务控制有关的 SQL 命令包括:
        BEGIN 或者 START TRANSACTION:开始事务;
        COMMIT:提交事务;
        ROLLBACK:回滚事务;
        SAVEPOINT:在事务内部设置回滚标记点;
        RELEASE SAVEPOINT:删除回滚标记点;
        ROLLBACK TO:将事务回滚到标记点(ROLLBACK 命令的一种变形写法)。

4。mysql的数据结构 

        mysql中主要应用的索引数据结构为B+树

        为什么用这种结构:

                由于数据存储于物理磁盘,所以要尽量减少磁盘IO的次数

                IO的次数取决于树的高度

                B+树将真实的数据放在叶子节点,数据项占的空间越小,数据项的数量越多,树的高度越低

        

        

  • 9
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值