zoukankan      html  css  js  c++  java
  • mysql08---优化01

    Mysql数据库的优化技术
    对mysql优化时一个综合性的技术,主要包括 a: 表的设计合理化(符合3NF) b: 添加适当索引(
    index) [四种: 普通索引(什么都不写)、主键索引(有一个主键,效率最高)、唯一索引unique、全文索引(对文本的索引)、组合索引] c: 分表技术(水平分割、垂直分割) d: 读[select][写: update/delete/add]分离 e: 存储过程 [比普通的sql要快,模块化编程,可以提高速度]
    数据库(oracle,mysql,db2,sqlserver)的3层结构:
    
    数据库是文件,dbms来操作文件。
    dbms拿到客户端的sql语句要先编译,在执行,执行后返回数据时候要缓存一下。直接发sql语句就要编译,编译耗时。把经常用的sql语句写成存储过程。存储过程是编译好的,客户端直接调用存储过程,就不用编译要快。存储过程的移植性不好。

    f: 对mysql配置优化 [配置最大并发数my.ini, ,一般1000就可以,太大内存不够。还有调整缓存大小 ]
    g: mysql服务器硬件升级
    h: 定时的去清除不需要的数据,定时进行碎片整理(尤其是存储引擎是MyISAM的,不清理会出问题) 
    什么样的表才是符合3NF (范式)
    表的范式,是首先符合1NF, 才能满足2NF , 进一步满足3NF,最高6范式。
    
    1NF: 即表的列的具有原子性,不可再分解,即列的信息,不能分解, 只有数据库是关系型数据库(mysql/oracle/db2/informix/sysbase/sql server),就自动的满足1NF
    
    ☞ 数据库的分类
    关系型数据库: mysql/oracle/db2/informix/sysbase/sql server
    非关系型数据库: (特点: 面向对象或者集合)
    NoSql数据库: MongoDB(特点是面向文档)
    
    
    2NF: 表中的记录是唯一的, 就满足2NF, 通常我们设计一个主键来实现
    
    3NF: 即表中不要有冗余数据, 就是说,表的信息,如果能够被推导出来,就不应该单独的设计一个字段来存放. 比如下面的设计就是不满足3NF。classname和depart可以推出来。

    反3NF : 但是,没有冗余的数据库未必是最好的数据库,有时为了提高运行效率,就必须降低范式标准,适当保留冗余数据。具体做法是: 在概念数据模型设计时遵守第三范式,降低范式标准的工作放到物理数据模型设计时考虑。降低范式就是增加字段,允许冗余(一对多都可能遇到)。 
    表设计要是一个通路,各个表都可以互相查到。

  • 相关阅读:
    [CF1039D]You Are Given a Tree
    [洛谷P2107]小Z的AK计划
    [CF409F]000001
    [洛谷P1801]黑匣子_NOI导刊2010提高(06)
    [洛谷P3377]【模板】左偏树(可并堆)
    [洛谷P2482][SDOI2010]猪国杀
    [CF45G]Prime Problem
    [CF735D]Taxes
    [洛谷P3413]SAC#1
    [洛谷P4124][CQOI2016]手机号码
  • 原文地址:https://www.cnblogs.com/yaowen/p/8204217.html
Copyright © 2011-2022 走看看