数据库性能优化,原来还可以有这种操作

数据库性能优化

01

MySQL 性能优化

  • 表的设计合理化,符合三大范式(3NF)
    • 1NF是对属性的原子性约束,要求属性(列)具有原子性,不可再分解;(只要是关系型数据库都满足1NF)
    • 2NF是对记录的惟一性约束,要求记录有惟一标识,即实体的惟一性;
    • 3NF是对字段冗余性的约束,它要求字段没有冗余。 没有冗余的数据库设计可以做到。
  • 添加适当索引(index) [四种: 普通索引、主键索引、唯一索引unique、全文索引]
    • 较频繁的作为查询条件字段应该创建索引;
    • 唯一性太差的字段不适合单独创建索引,即使频繁作为查询条件;
    • 更新非常频繁的字段不适合创建索引
    • 不会出现在WHERE子句中的字段不该创建索引
  • 分表技术(水平分割、垂直分割);
  • 读写[写: update/delete/add]分离;
  • 存储过程 [模块化编程,可以提高速度];
  • 对mysql配置优化 [配置最大并发数my.ini, 调整缓存大小 ];
  • mysql服务器硬件升级;
  • 定时的去清除不需要的数据,定时进行碎片整理(MyISAM)。

02

SQL语句优化

  • 通过show status命令了解各种SQL的执行频率;
  • 定位执行效率较低的SQL语句-(重点select;
  • 通过explain分析低效率的SQL;
  • 确定问题并采取相应的优化措施。

03

索引

  • 索引的类型
    • 主键索引,主键自动的为主索引 (类型Primary);
    • 唯一索引 (UNIQUE);
    • 普通索引 (INDEX);
    • 全文索引 (FULLTEXT) [适用于MyISAM] ——》sphinx + 中文分词 coreseek [sphinx 的中文版 ];
    • 综合使用=>复合索引
  • 可能使用到索引
    • 对于创建的多列索引,只要查询条件使用了最左边的列,索引一般就会被使用。
    • 对于使用like的查询,查询如果是 ‘%aaa’ 不会使用到索引, ‘aaa%’ 会使用到索引。
  • 不使用索引
    • 如果条件中有or,即使其中有条件带索引也不会使用。
    • 对于多列索引,不是使用的第一部分,则不会使用索引。
    • like查询是以%开头
    • 如果列类型是字符串,那一定要在条件中将数据使用引号引用起来。否则不使用索引。(添加时,字符串必须’’)
    • 如果mysql估计使用全表扫描要比使用索引快,则不使用索引。

原文发布于微信公众号 - 轮子工厂(Programmer-ing)

原文发表时间:2018-05-02

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏高性能服务器开发

数据库进阶3 Mysql 性能优化20个原则(1)

今天,数据库的操作越来越成为整个应用的性能瓶颈了,这点对于Web应用尤其明显。关于数据库的性能,这并不只是DBA才需要担心的事,而这更是我们程序员需要去关注的事...

11310
来自专栏北京马哥教育

数据库基础知识:数据库中的约束和三大范式

? 一.数据库中的范式: 范式, 英文名称是 Normal Form,它是英国人 E.F.Codd(关系数据库的老祖宗)在上个世纪70年代提出关系数据库模型后...

32470
来自专栏Snova云数仓

Greenplum性能优化之路 --(一)分区表

分区表就是将一个大表在物理上分割成若干小表,并且整个过程对用户是透明的,也就是用户的所有操作仍然是作用在大表上,不需要关心数据实际上落在哪张小表里面。Green...

9.4K110
来自专栏北京马哥教育

五分钟 SQL Server 学习入门——基本篇

? 作者:My_heart_ 来源:http://blog.csdn.net/my_heart_/article/details/62425140 首先相信...

40340
来自专栏Python

Innodb与Myisam引擎的区别与应用场景

1.区别: (1)事务处理: MyISAM是非事务安全型的,而InnoDB是事务安全型的(支持事务处理等高级处理); (2)锁机制不同: MyISAM是表级锁,...

39570
来自专栏程序猿

MySQL优化方案(一)优化SQL脚本与索引

MySQL的优化方案有哪一些? 本文记录MySQL优化方案 ,梗概如下: 优化SQL 优化索引 (一)优化SQL 1、通过MySQL自有的优化语句 优化SQL语...

45170
来自专栏java学习

oracle数据库的常用的命令操作!

Java基础 | 数据库 | Android | 学习视频 | 学习资料下载 最新通知 数据库技术是计算机科学技术的一个重要分支。从20世纪50年代中期开始,...

32870
来自专栏Java帮帮-微信公众号-技术文章全总结

【数据库】MySQL进阶一、主外键讲解

MySQL进阶主外键讲解 1.什么是外键: 主键:是唯一标识一条记录,不能有重复的,不允许为空,用来保证数据完整性 外键:是另一表的主键, 外键可...

37670
来自专栏Rgc

mysql数据库优化(三)--分区

分区:把一个数据表的文件和索引分散存储在不同的物理文件中。 特点:业务层透明,无需任何修改,即使从新分表,也是在mysql层进行更改(业务层代码不动)

23430
来自专栏butterfly100

InnoDB锁机制

1. 锁类型 锁是数据库区别与文件系统的一个关键特性,锁机制用于管理对共享资源的并发访问。 InnoDB使用的锁类型,分别有: 共享锁(S)和排他锁(X) 意...

41350

扫码关注云+社区

领取腾讯云代金券