zoukankan      html  css  js  c++  java
  • 一,数据库优化基本概念

    一,mysql优化从那几个方面入手

    1,数据库(表)设计合理,

    数据表设计符合3NF(3范式),有时需要适当的逆范式。

    2,sql语句的优化

    3,数据库参数配置

    4,适当的硬件配置和操作系统

    这个顺序也表现了这四个工作对性能影响的大小。

    二,三个范式

    1,第一范式:1NF是对属性的原子性约束,要求属性具有原子性,不可再分解;(只要是关系型数据库都满足1NF)。

    2,第二范式:2NF是对记录的唯一性约束,要求记录有唯一标识,即实体的唯一性。

    3,第三范式:3NF是对字段冗余的约束,即任何字段不能有其它字段派生出来,它要求字段没有冗余,没有冗余的数据库设计可以做到。

    可以用一个实例解释第三范式:

    数据表学生student

    数据表班级grade

    student数据表中如果有className(班级名称字段),这就是冗余,应该用clssId(班级id)代替className。

    但是没有冗余的数据库未必是最好的数据库,有时为了提高运行效率,就必须降低范式标准,适当保留冗余数据。具体做法是:在概念数据模型设计时遵守第三范式,降低范式标准的工作放到物理数据模型设计时考虑。降低范式就是增加字段,允许冗余。

    4,逆范式

    通过实例讲解范式

    相册网站,相册表

    photoes

     

    1,现在希望得到每张相片点击次数;在photoes中添加hits字段

    2,得到相册中每种动物点击次数;SQL语句:select sum(hits) from photoes where albumid = 1;

    这样查询数据库,对数据库造成很大压力,可以在相册表中也添加一个hits字段,当photoes中hits增加时候,同时修改相册表中hits字段。

    这样就不符合第三范式,但是其恰恰是合理的,这就是一个适当的逆范式。

  • 相关阅读:
    关于日志造成的频繁的IO
    PHP
    gitignore
    Linux安装gradle
    Ambari和ClouderManager分析对比
    原生hadoop生态系统组件安装文档
    hive的数据类型和数据模型
    hive概述
    使用binlog和canal从mysql实时抽取数据
    canal概述
  • 原文地址:https://www.cnblogs.com/usa007lhy/p/5769541.html
Copyright © 2011-2022 走看看