在之前我写过一篇关于这个方面的文章

《【原创】为什么使用数据索引能提高效率?(本文针对mysql进行概述)(更新)》

这次,主要侧重点讲下两种常用存储引擎。

我们一般从两个方面进行MySQL数据库优化:

A、SQL语句的优化。

这点,需要我们在写SQL的时候要特别注意,在建表的时候也非常注意。

1 尽量不要在列上进行运算,这样会导致索引失效。

2 使用JOIN时候,应使用小结果集驱动大结果集。把复杂的JOIN拆分成多个QUERY。在多JOIN的时候,最容易导致锁表和堵塞。

3 在使用LIKE进行模糊查询时候,避免使用%%。这样即使有索引的情况下,索引也会失效。

如:

SELECT * FROM TABLENAME WHERE name LIKE '%wang%'

需要进行优化:

SELECT * FROM TABLENAME WHERE name >= 'wang' AND name < 'wanh'

这样,将会使用到索引。前提是你对列name添加了索引。

4 仅列出查询的字段,这样节省内存。如果字段不是很多的话,也可以使用 *

5 使用批量插入语句节省交互。

6 limit基数较大的时候,用BETWEEN。如

SELECT * FROM TABLENAME LIMIT 100000,10

优化下

SELECT * FROM TABLENAME BETWEEN 100000,100010

但是,用BETWEEN有个问题,如果中间有删除的,则数据肯定少

7 获取多条随机记录的时候,不要使用rand()。可以用PHP产生随机数,然后使用IN

8 避免使用NULL。

9 不要使用COUNT(id),使用COUNT(*)

10 尽量在索引中完成相关排序工作

在关键字段上,值得是出现在WHERE列中的,建不建索引差别很大。查询速度相差近100倍

并不是建了索引就有用,差的索引反而会导致查询速度下降

索引不是越多越好,MySQL维护索引需要成本

B 服务器相关优化

1 选择存储引擎

是选择MYISAM还是 InnoDB,取决于你的实际情况。

先了解下这两个的区别:MYSIAM表级锁。没有事务机制。快读。INNODB支持事务,行级锁。INNODB是行级锁,相对表级锁会带来较大的消耗。但是在系统并发量较大的情况下,性能高于MySIAM。INNODB的索引不仅缓存索引本身还缓存数据。

INNODB需要更多的内存支持。不过,现在硬件的投入都是比较廉价的。

在这个地方需要了解个 R/W 读写比。show global status 查看 Com_select 表示SELECT语句执行的次数,Com_insert表示INSERT语句执行的次数。通过计算读类型和写类型的语句比例。我们大概得到个读写比例。

理想的情况是100:1,当R/W 小于 10:1的时候,认为是写为主。一般而言,这个值是30:1

我们给出个存储引擎选择的原则:

1 采用MyISAM

a  R/W > 100:1且UPDATE较少

b 并发不高不需要事务

c 表数据量较小

d 硬件资源有限 如内存小

2 采用INNODB

a R/w < 20:1 OR < 10:1 且update频繁

b 表数据量较大,1000万左右的 并发较大的

c 安全性和可用性较高。如 事务机制

关于MySQL数据库优化的部分整理的更多相关文章

  1. 中国移动MySQL数据库优化最佳实践

    原创 2016-08-12 章颖 DBAplus社群 本文根据DBAplus社群第69期线上分享整理而成,文末还有书送哦~ 讲师介绍章颖 数据研发工程师 现任中国移动杭州研发中心数据研发工程师,擅长M ...

  2. MySQL数据库优化、设计与高级应用

    MySQL数据库优化主要涉及两个方面,一方面是对SQL语句优化,另一方面是对数据库服务器和数据库配置的优化. 数据库优化 SQL语句优化 为了更好的看到SQL语句执行效率的差异,建议创建几个结构复杂的 ...

  3. 【MySQL】花10分钟阅读下MySQL数据库优化总结

    1.花10分钟阅读下MySQL数据库优化总结http://www.kuqin.com2.扩展阅读:数据库三范式http://www.cnblogs.com3.my.ini--->C:\Progr ...

  4. 30多条mysql数据库优化方法,千万级数据库记录查询轻松解决(转载)

    1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索 ...

  5. 50多条mysql数据库优化建议

    1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 缺省情况下建立的索引是非群集索引,但有时它并不是最佳的.在非群集索引下,数据在物理上随机存 ...

  6. 解开发者之痛:中国移动MySQL数据库优化最佳实践(转)

    开源数据库MySQL比较容易碰到性能瓶颈,为此经常需要对MySQL数据库进行优化,而MySQL数据库优化需要运维DBA与相关开发共同参与,其中MySQL参数及服务器配置优化主要由运维DBA完成,开发则 ...

  7. 30多条mysql数据库优化方法【转】

    1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索 ...

  8. 百万行mysql数据库优化和10G大文件上传方案

    百万行mysql数据库优化和10G大文件上传方案 最近这几天正在忙这个优化的方案,一直没时间耍,忙碌了一段时间终于还是拿下了这个项目?项目中不要每次都把程序上的问题,让mysql数据库来承担,它只是个 ...

  9. 从运维角度来分析mysql数据库优化的一些关键点【转】

    概述 一个成熟的数据库架构并不是一开始设计就具备高可用.高伸缩等特性的,它是随着用户量的增加,基础架构才逐渐完善. 1.数据库表设计 项目立项后,开发部根据产品部需求开发项目,开发工程师工作其中一部分 ...

随机推荐

  1. arcgis api for js入门开发系列八聚合效果(含源代码)

    上一篇实现了demo的图层控制模块,本篇新增聚合效果,截图如下(源代码见文章底部): 聚合效果实现的思路如下: 1.map.html引用聚合包,项目已经包含进来了的聚合文件夹: <script ...

  2. BPM协同平台解决方案分享

    一.需求分析 企业信息化的过程都是从单纯解决一个业务功能问题,到解决企业内部业务流程问题,再扩展到解决不同业务流程的关联互动问题, 核心是业务的集成和业务的协同,需要有一个统一的业务协同平台. 国内的 ...

  3. JDK安装与配置

    JDK安装与配置 一.下载 JDK是ORACLE提供免费下载使用的,官网地址:https://www.oracle.com/index.html 一般选择Java SE版本即可,企业版的选择Java ...

  4. java 字节流与字符流的区别

    字节流与和字符流的使用非常相似,两者除了操作代码上的不同之外,是否还有其他的不同呢?实际上字节流在操作时本身不会用到缓冲区(内存),是文件本身直接操作的,而字符流在操作时使用了缓冲区,通过缓冲区再操作 ...

  5. Form 表单提交参数

    今天因为要额外提交参数数组性的参数给form传到后台而苦恼了半天,结果发现,只需要在form表单对应的字段html空间中定义name = 后台参数名 的属性就ok了. 后台本来是只有模型参数的,但是后 ...

  6. [Django]用户权限学习系列之User权限基本操作指令

    针对Django 后台自带的用户管理系统,虽说感觉还可以,但是为了方便用户一些操作,特别设计自定义的用户权限管理系统. 在制作权限页面前,首先需要了解权限和用户配置权限的指令,上章讲到权限的添加,删除 ...

  7. thinkphp-无限分类下根据任意部门获取顶级部门ID

    根据所得到的部门编号获取顶级部门ID: 参数 - department_id 表格组织架构: tab_departments department_id parent_id name 1 1 顶级 2 ...

  8. CentOS上 Mono 3.2.8运行ASP.NET MVC4经验

    周一到周三,折腾了两天半的时间,经历几次周折,在小蝶惊鸿的鼎力帮助下,终于在Mono 3.2.8上运行成功MVC4.在此总结经验如下: 系统平台的版本: CentOS 6.5 Mono 3.2.8 J ...

  9. 游戏编程系列[1]--游戏编程中RPC协议的使用[2]--Aop PostSharp篇

    上一篇我们使用了一个通用JSON协议约定来进行达到远程调用的目的.但是从实现上,我们需要不断的在所有的方法上添加拦截,并且判断拦截,然后执行,这就达到了一个比较繁琐的目的. 之前我们尝试过使用代码生成 ...

  10. 原生ajax实现登录(一部分代码)

        <script type="text/javascript">          function ajax() {          //先声明一个异步请求对 ...