• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase
您的位置:首页 > 数据库 >Mysql > Mysql数据库优化的方法总结(必看)

Mysql数据库优化的方法总结(必看)

作者:匿名 字体:[增加 减小] 来源:互联网 时间:2018-12-05

匿名通过本文主要向大家介绍了mysql,优化等相关知识,希望本文的分享对您有所帮助
本篇文章给大家带来的内容是关于Mysql数据库优化的方法总结,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

学无止境,数据库优化分为方方面面,在这里,我进行了比较全的总结,分享给正在工作或者学习的同行们。

数据库的优化分为以下七大方面:

1、表的设计要符合三范式(适当的反三范式也可以);

2、添加适当的索引,索引对查询速度影响很大,必须添加索引(主键索引,唯一索引,普通索引,全文索引);

3、添加适当存储过程,触发器,事务等;

4、读写分离(主从数据库);

5、对sql语句的一些优化,(查询执行速度比较慢的sql语句);

6、分表分区(分表:把一张大表分成多张表。分区:把一张表里面的分配到不同的区域存储);

7、对mysql服务器硬件的升级操作。

接下来我将具体讲解优化的方式。

一、三范式

第一范式:

原子性:表里面的字段不能再分割,只要是关系型数据库,就天然的自动满足第一范式

关系型数据库(有行和列的概念):mysql、sql server、oracle、db2、infomix、sybase、postgresql,在设计时,先有库->表->字段->具体记录(内容):在存储数据时,要设计字段。

非关系型数据库(泛指nosql数据库):memcache、redis、momgodb等。

第二范式:

一个表中没有完全相同的记录,通过一个主键即能解决

第三范式:

表中不能存储冗余数据

反三范式设计:

相册表
ID相册名称相册浏览量
1生活照100
2工作照100
照片表
ID照片名称相册ID浏览量
1我的小狗149
2我的小猫151
3我的同事2100

如果要算一个相册的浏览量,我们可以在相册表中添加相册浏览量字段,浏览照片的时候同时更新相册浏览量。

二、开启慢查询

Mysql慢查询默认是关闭的,默认记录超过10秒的sql语句。

1.查看慢查询记录时间:

show variables like ‘long_query_time’;

2.修改慢查询时间:

set long_query_time=2;

3.通过如下的一个函数来进行测试:

benchmark(count,expr)   函数可以测试执行count次expr操作需要的时间

三、建立索引

1、主键索引的特点:

(1)一个表中最多只有一个主键索引

(2)一个主键索引可以指向多个列

(3)主键索引的列,不能有重复的值,也不能有null

(4)主键索引的效率高。

2、唯一索引的特点:

(1)一个表中可以有多个唯一索引

(2)一个唯一索引可以指向多个列,

(3)如果在唯一索引上,没有指定not null,则该列可以为空,同时可以有多个null,

(4)唯一索引的效率较高。

3、普通索引:

使用普通索引主要是提高查询效率

4、全文索引

mysql自带的全文索引mysql5.5不支持中文,支持英文,同时要求表的存储引擎是myisam。如果希望支持中文,有两个方案,

(1)使用aphinx中文版coreseek (来替代全文索引)

(2)插件mysqlcft。

添加索引主要的问题:

(1)较频繁的作为查询条件字段应该创建索引,唯一性太差的字段不适合单独创建索引,即使频繁作为查询条件,更新非常频繁的字段不适合创建索引

(2)不会出现在WHERE子句中字段不该创建索,索引是由代价的,虽然是查询速度提高了,但是,会影响增该删的效率。而且索引文件会占用空间。

四、分表、分区

垂直分表(内容主表+附加表):

内容主表:存储各种数据的一些公共信息,比如数据的名称,添加时间等,

可以使用多个附加表,附加表存储一些数据的独特的信息。

主要原因:是内容主表里面的数据访问比较频繁。

特点:表结构不同

水平分表:

将表数据存在不同的表中。

特点:表结构相同

分区:

就是把一个表存储到磁盘不同区域,仍然是一张表。

基本的概念:

(1)Range(范围)–这种模式允许将数据划分不同范围。例如可以将一个表通过年份划分成若干个分区。

(2)List(预定义列表)–这种模式允许系统通过预定义的列表的值来对数据进行分割。

(3)Hash(哈希)–这中模式允许通过对表的一个或多个列的Hash Key进行计算,最后通过这个Hash码不同数值对应的数据区域进行分区。例如可以建立一个对表主键进行分区的表。

(4)Key(键值)-上面Hash模式的一种延伸,这里的Hash Key是MySQL系统产生的。

分区表的限制:

(1)只能对数据表的整型列进行分区,或者数据列可以通过分区函数转化成整型列。

(2)最大分区数目不能超过1024。

(3)如果含有唯一索引或者主键,则分区列必须包含在所有的

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 分享下mysql各个主要版本之间的差异
  • MySQL essential版本和普通版本有什么区别?
  • redhat 5.4下安装MYSQL全过程
  • 如何用SQL命令查看Mysql数据库大小
  • 解析mysql中如何获得数据库的大小
  • 解析mysql修改为utf8后仍然有乱码的问题
  • 5个常用的MySQL数据库管理工具详细介绍
  • 解析在MySQL里创建外键时ERROR 1005的解决办法
  • 解析远程连接管理其他机器上的MYSQL数据库
  • mysql 精简过程(删除一些文件)

相关文章

  • 2018-12-05mysql数据分组和排序及SELECT子句顺序
  • 2018-12-05怎样对ACCESS数据库中的表进行分析和优化
  • 2017-05-11mysql使用教程之分区表的使用方法(删除分区表)
  • 2018-12-05sysservers 中找不到服务器,请执行 sp_addlinkedserver 将该服
  • 2018-12-05MySQL数据库操作:创建、查看、使用、删除
  • 2017-05-11mysql多个TimeStamp设置的方法解读
  • 2018-12-05常用mysql优化sql语句查询方法汇总
  • 2017-05-11linux服务器清空MySQL的history历史记录 删除mysql操作记录
  • 2018-12-05MySQL利用profile分析慢sql代码实例详解
  • 2018-12-05Access使用宏控制程序之在宏中使用条件

文章分类

  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase

最近更新的内容

    • SQL 复合查询条件(AND,OR,NOT)对NULL值的处理方法
    • 分享SQL Server删除重复行的6个方法
    • 布尔教育燕十八mysql入门视频教程的资源(源码课件)推荐
    • SQL Server 作业的备份(备份作业非备份数据库)
    • And,Where使用提示以及用+进行左关联的提示及注意事项
    • Oracle常见错误诊断
    • Python快速教程(补充篇04):Python简史
    • MySQL SELECT同时UPDATE同一张表问题发生及解决
    • sql2008保存注册服务器的实现方法
    • 有关DAO的文章推荐10篇

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有