zoukankan      html  css  js  c++  java
  • 数据库优化(理论篇)

    数据库事务的四个特性:ACID

    1.原子性

    2.一致性

    3.隔离性

    4.持久性

    1,关系型数据库;是建立在关系数据库模型基础上的数据库,借助于关系代数等概念和方法来处理数据库中的数据,同时也是一个被组织成一组拥有正式描述性的表格,该表格的表格作用实质是装载着数据项的特殊收集体,这些表格中的数据能以许多不同的方式被取或重新召集而不需要重新组织数据库表格;

    2关系代数:

    在数学中,关系代数是支出叫做逆反的对合一运算的剩余布尔代数。激发关系代数的例子是在集合X上的所有二元关系的代数,带有R-S被解释为平常的二元关系复合;

    在数据库中,关系代数是一阶逻辑的分支,是闭合于运算下的关系的集合。运算作用于一个或多个关系上来生成一个关系;关系代数是计算机科学的一部分。

    在纯数学中的关系代数是有关于数理逻辑和集合论下的代数结构;

    关系代数是一种抽象的查询语言,用于对关系的运算来表达查询,作为研究关系数据语言的数学工具。

    关系代数的运算对象是关系,运算结果为关系;关系代数用到的运算符包括四类:集合运算符,专门的关系运算符,算数比较符,逻辑运算符;

    数据库关系代数的六个运算:选择,投影,笛卡尔积,并集,差积,重命名;

    selec A.*,B.*  投影

    from A,B        笛卡尔积

    where A.c1 = B.c1 and A.c1 = 5  选择

    union             并集

    selec A.*,B.*

    from A,B

    where A.c1 = B.c1 and A.c1 = 10;

    SQL的查询语言松散的基于关系代数,尽管SQL中的操作数不完事是关系,很多有用的关于代数的理论在SQL对应者中不成立;

    二,数据库的优化

    1.查询优化技术;

    数据库查询优化技术主要包括查询重用技术,查询重写规则,查询算法的优化技术,并行查询优化技术,分布式查询优化技术,及其它方面(如框架结构)的优化技术,这6项技术构成了一个广义的数据库查询优化的概念;

    从优化的内容上看,查询优化又分为代数优化和非代数优化,或称为逻辑优化和物理优化。逻辑优化主要依据关系代数的等价变换做一些逻辑变换,物理优化主要根据数据读取,表连接方式,边连接顺序,排序等技术对查询进行优化。查询重写规则属于逻辑优化,运用了代数关系和启发式规则,查询算法优化属于物理优化,运用了基于代价估算的多表连接算法求解最小话费的技术;

    2.数据库调优

    数据库调优可以使数据库应用运行的更快,其目标是使数据库有更高的吞吐量(在单位时间内完成的事务越多越好),更短的响应时间(没一个事务的响应时间越短越好);

    被调优的对象是整个数据库管理系统总体;

    查询语句优化的对象是一条查询语句;

    3.数据库调优的方式

    1)人工调优:主要依赖人,效率低下;要求操作者完全理解常识所依赖的原理,还需要对应用,数据库管理系统,操作系统以及硬件有广泛而深刻的理解;

    2)基于案例的调优:总结经典案例情况中数据库参数的推荐配置值,数据逻辑层设计等情况,从而为用户的调优 工作提供一点的参考和借鉴;但这种方式忽略了系统的动态和不同系统间存在的差异;

    3)自调优:为数据库系统建立一个模型,根据‘影响数据库系统性能效率的因素’,数据库系统自进行参数的配置;

    4.数据库调优主要分为五个阶段:

    1)第一阶段:需求分析期,应用情况的估算,系统选型策;

    2)第二阶段:项目测试期,数据模型的设计;

    3)第三阶段:开发期,SQL的设计,数据库功能的启用;

    4)第四阶段:测试与运行,数据库功能的启用,模型系统预运行,系统监控分析;

    5)第五阶段:上线与维护,系统监控分析;

    5.数据库调优五个阶段的主要技术:

    1)应用情况的预算:应用的使用方式(把业务逻辑转为数据库的读写分别逻辑,以是读多写少好是读写均衡等来区分OLTP和)

    逻辑查询优化:

    1.查询操作的优化

    a)选择操作

        选择优化:对应的是限制条件(=,>,<等),操作对象是二维表中的行

        优化方式:选择操作下推(如A.a = B.a AND A.a =1 可转换成A.a = 1 AND B.a = 1,这样就将A.B表的条件,下推到各自对应的表中)

        目的:尽量减少连接操作前的元数组,使得中间临时关系尽量少

        好处:减少IO和CPU的消耗,节约内存空间

    b)投影操作:对应的select查询的目的列对象

        优化方式:投影操作下推

        目的:尽量减少连接前的列数,使得中间临时关系尽量小

        好处:这样虽然不能减少IO,但是可以减少连接后的中间关系的元组大小,节约内存空间;

    c) 连接操作:对应的是连接条件,表示两个表连接的条件

        连接操作涉及两个子问题:

         1)多表连接中每个表被连接的顺序决定效率;如果一个查询语句只有一个表,则这样的语句很简单;但如果有多个表,则会涉及表之间以什么样的顺序俩连接最高效;

         2)多表连接没个表连接的顺序被用户语义定义;查询语句多表连接有着不同的语义,这决定着表之间的前后连接次序是不能随意更换的。否则,结果集中数据是不同的。因此,表的前后连接次序是不能随意交换的;

    2.使用explain来获取select的详细信息

        语法:EXPLAIN

  • 相关阅读:
    Java 实现 HDFS 文件基本操作
    [git] branch 分支操作
    Java基本语法-----java流程控制语句
    Java基本语法-----java运算符的优先级与结合性
    Java基本语法-----java数据类型的转换
    CSDN发表文章后老是待审核的原因
    Java基本语法-----java变量
    Java基本语法-----java进制的转换
    Java基本语法-----java常量
    Java基本语法-----java注释
  • 原文地址:https://www.cnblogs.com/smailjunk/p/10514815.html
Copyright © 2011-2022 走看看