Mysql优化(1)——表优化

原创 2015年11月17日 23:42:59

MYSQL优化

MySQL优化一直是个头痛的问题,由于自己刚接触MySQL不久,故把自己的学习过程记录于此。

mysql的优化不是指某个sql的优化,而是多种优化的组合,以下列表列出一般优化的过程。

  • 表的设计优化(符合3NF)
  • 索引
  • sql优化
  • 分表技术
  • 读写分离
  • 存储过程
  • mysql配置的优化
  • MySQL服务器硬件优化
  • 清除不需要数据,定时整理碎片(MyISAM引擎)

表优化

mysql表的优化主要是指标的设计要符合理念;

1、首先表的设计要满足3NF

数据库3NF

第一范式:表的属性具有原子性,不可再分解。即表的列不可再分解。现在的关系型数据库都满足第一范式。

第二范式:表中的记录要唯一,既不能出现完全相同的一行数据,可设计主键来满足第二范式。

第三范式:避免不必要的冗余数据,就是说,表的字段信息,如果能够被推导出来,就不应该单独的设计一个字段来存放.

2、为每个表选择合适的引擎

MySQL支持多种存储引擎,每种都有自己的特色。下列表列出来MySQL的存储引擎;

  1. MyISAM
  2. IBMDB2I
  3. InnoDB
  4. MEMORY
  5. MERGE
  6. FEDERATED
  7. ARCHIVE
  8. CSV
  9. EXAMPLE
  10. BLACKHOLE

下面就常用的三个引擎做少许说明,

MyISAM

MyISAM引擎是3.23版本后的默认存储引擎,即当你在创建表时若没有指定存储引擎,则默认是myisam引擎的,该引擎的表能存储更多的数据,查询速度快,但无法处理事务等高级特性。

myisam引擎创建的表又分三种格式:静态、动态、压缩;
关于静态MyISAM和动态MyISAM是指当表的任一列都不含varchar,text,blog,xblog,xtext时,MySQL就认为该表是静态的。

静态MyISAM类型的表的性能很高,因为在维护和访问以预定义存储的数据时开销很低而且最不可能出现因数据损坏而失败的情况,但缺点是消耗空间资源,每列都需要为该列分配最大空间而不管是否使用。(如某字段类型为char(20), 当该字段只存了 ‘aaaa’ 四个字节时,其依旧占用了20字节的存储空间)。

动态MyISAM:虽然MyISAM动态占用的空间比静态格式的少,但容易参数碎片。如某个字段的内容改变时,则该字段存储在磁盘的位置可能需要移动,这会导致碎片的产生,当碎片过多时就会严重影响性能。这有两种解决方案:
1:尽量使用静态数据类型
2:使用 optimize table 整理表的碎片

在整个应用程序生命周期都可读是,就应该把设计为MyISAM压缩格式的,可以用myisampack工具来将其转换为myISAM压缩表以减少占用空间

InnoDB
INnoDB是一个精壮的事务型存储引擎。是以下情况的理想引擎:

  • 更新密集的表
  • 事务
  • 灾难恢复

MEMORY

改引擎的表数据存储在内存中, 速度最快,但当MySQL进程崩溃时,所有的MEMORY数据都会丢失。


版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

架构设计:系统存储(5)——MySQL数据库性能优化(1)

转自http://blog.csdn.net/yinwenjie/article/details/52461398接上文:《架构设计:系统存储(4)——块存储方案(4)》 1、MySQL概述从本文开...

MySQL 查询优化: LIMIT 1 避免全表扫描提高查询效率

原文:http://www.jb51.net/article/35774.htm 在某些情况下,如果明知道查询结果只有一个,SQL语句中使用LIMIT 1会提高查询效率。 例如下面的用户表(...

Mysql存储过程优化——使用临时表代替游标

Mysql游标在操作小数据量时比较方便,效率可观,但操作大数据量,速度比较慢,甚至直接产生系统错误。 一般说来,当操作的数据超过1万条时,就避免用游标吧。 为了测试游标性能,写了下面一个游标对IDC_...

从零开始学_JavaScript_系列(27)——myblog的优化【1】样式表分离、localStorage

myblog的建立参照: http://blog.csdn.net/qq20004604/article/details/52019904 本来打算今天写的轮播图,不过突然看到localSto...

vs2010 c# MySql 用户登录注册设计代码优化1

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin...

mysql数据库优化技术(1)

对mysql优化是一个综合性的技术,主要包括: a、表的设计合理化(符合3NF); b、添加适当的索引(index)[四种]:普通索引、主键索引、唯一索引(unique)、全文索引; c、分表技术(水...

mysql优化(1)show命令 慢查询日志 explain profiling

目录 一、优化概述 二、查询与索引优化分析 1性能瓶颈定位 Show命令 慢查询日志 explain分析查询 profiling分析查询   2索引及查询优化 三、配置优化 1)...

系统优化总结(1)----MySql批处理

随着业务的蓬勃发展,我们的服务器日均访问量从年初的二三十万增加到现在的800万左右,对系统的原有架构和性能都是一个很大的挑战,所以最近对系统做了一次较大的优化升级来应对日益增长的服务器压力,对原来的业...

mysql性能优化学习与实战-1

环境mysql5.7+centos6+sysbench常用命令[root@centos1 ~]# uname -a Linux 内核名称 centos1 主机名称 2.6.32-431.el6.x8...

【MySQL】性能优化之 index merge (1)

转载自http://blog.itpub.net/22664653/viewspace-774687/ 一 序言介绍 MySQL 5.0 版本之前,每条个表在查询时 只能使用一个索引,有些...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)