ylbtech-DB-SQL-MySQL-杂项-调优:Mysql千万以上数据优化、SQL优化方法
1.返回顶部
1、

1,单库表别太多,一般保持在200以下为宜

2,尽量避免SQL中出现运算,例如select a+5 from A,让DB功能单一化

3,表设计尽量小而精,能用5个字段就不要用6个(不绝对,取决于业务,该冗余时坚决不要手软)

4,SQL事务不能设计太大,比如一次性提交10W条insert,当然这个不仅仅是性能问题了,可能直接内存溢出了

一般来说insert事务的话,5K-1W来做批处理就可以了(字段不能太大)

5,设计表的时候尽量用”小数据类型”,比如尽量避免text,blob等这些大家伙,优先使用ENUM和SET(小而美,范围有限,百益无一害)

6,设计表字段能用数字类型就千万别用字符类型,比如存IP地址,用int,别用varchar(方法自己百度一下吧)

7,尽量避免null字段,定义时尽量使用 not null.原因是允许null时不方便查询优化,复合索引也会失效,而且如果列有索引时会额外占用空间: a int(10) NOT NULL DEFAULT 0

8,图片等大家伙不要存DB,用fastdfs等中间件或者直接使用七牛等云存储都可以搞,也不贵

A,大SQL尽量拆分,多核CPU每个CPU只能执行一个SQL,所以并发时,一堆小的可能效率更高一些,并且容易命中缓存,而且不容易长时间锁表(无论什么锁都是时间越短越好),当然这个要结合实际情况分析了,一大堆小的万一增加IO负担呢。

B,事务尽可能的小,代码别偷懒,全加到一个transaction中,道理不多说了

C,存储过程,触发器之类的能避就全避免了吧,维护不方便,人员变动时,很多时候就忘了,时间一长全是定时炸弹

D,禁止select *,不用问为啥了,禁止就是禁止!需要啥就取啥是王道

E,update时,where语句尽量要走索引,不然会全表扫描,一般情况下,1G的数据至少10S(想想这可是update啊,锁住10S意味着啥)

F,or尽量不用,改为in(),当然in的范围太多也不行,尽量别超100

G,还是or,如果:select a from A where b=1 or c=1这种where里面不同字段进行or,这种尽量改为union

select a from A where b=1

union

select a from A where c=1

H,避免 “% 前缀”模糊查询 。因为会导致索引失效,大数据量下是灾难

I,分页时:Select a from A limit 10000,10; 这种大偏移量下效率非常低。可以考虑如下几个方案:

select a from A WHERE id>=xxxx limit 11;(将上一页的最大值通过where id> 进行预处理,然后分页)

select a from A WHERE id >= ( select a from A limit 10000,1 ) limit 10;

select a from A inner join (select a from A limit 10000,10) using (id) ;

J,避免使用count(*),不知道为什么mysql优化这么个东西有那么难么,但是实际上大数量下这个东西真心慢,1000W以上至少几秒,作为替代方案,考虑使用nosql例如redis,memcached存下来,但是要定时校对。还有一个办法,直接做一个表存下来,每次增加或者减少都在这个表做update增减

K,UNION ALL 而非 UNION ,看需要啦,一般不用去重的业务的话去重压力不小,能省则省

L,尽量不用 INSERT SELECT,数据量大有延迟,同步完了可能有错误

2、
2.返回顶部
 
3.返回顶部
 
4.返回顶部
 
5.返回顶部
 
 
6.返回顶部
 
作者:ylbtech
出处:http://ylbtech.cnblogs.com/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

DB-SQL-MySQL-杂项-调优:Mysql千万以上数据优化、SQL优化方法的更多相关文章

  1. MySql(十):MySQL性能调优——MySQL Server性能优化

    本章主要通过针对MySQL Server( mysqld)相关实现机制的分析,得到一些相应的优化建议.主要涉及MySQL的安装以及相关参数设置的优化,但不包括mysqld之外的比如存储引擎相关的参数优 ...

  2. MySQL性能调优——索引详解与索引的优化

    --索引优化,可以说是数据库相关优化.理解尤其是查询优化中最常用的优化手段之一.所以,只有深入索引的实现原理.存储方式.不同索引间区别,才能设计或使用最优的索引,最大幅度的提升查询效率! 一.BTre ...

  3. 面试题:MySQL性能调优——索引详解与索引的优化 没用

    ——索引优化,可以说是数据库相关优化.理解尤其是查询优化中最常用的优化手段之一.所以,只有深入索引的实现原理.存储方式.不同索引间区别,才能设计或使用最优的索引,最大幅度的提升查询效率! 一.BTre ...

  4. MySql(十一):MySQL性能调优——常用存储引擎优化

    一.前言 MySQL 提供的非常丰富的存储引擎种类供大家选择,有多种选择固然是好事,但是需要我们理解掌握的知识也会增加很多.本章将介绍最为常用的两种存储引擎进行针对性的优化建议. 二.MyISAM存储 ...

  5. MySQL性能调优与架构设计——第 15 章 可扩展性设计之Cache与Search的利用

    第 15 章 可扩展性设计之Cache与Search的利用 前言: 前面章节部分所分析的可扩展架构方案,基本上都是围绕在数据库自身来进行的,这样是否会使我们在寻求扩展性之路的思维受到“禁锢”,无法更为 ...

  6. MySQL性能调优与架构设计——第11章 常用存储引擎优化

    第11章 常用存储引擎优化 前言: MySQL 提供的非常丰富的存储引擎种类供大家选择,有多种选择固然是好事,但是需要我们理解掌握的知识也会增加很多.每一种存储引擎都有各自的特长,也都存在一定的短处. ...

  7. MySQL性能调优与架构设计——第3章 MySQL存储引擎简介

    第3章 MySQL存储引擎简介 3.1 MySQL 存储引擎概述 MyISAM存储引擎是MySQL默认的存储引擎,也是目前MySQL使用最为广泛的存储引擎之一.他的前身就是我们在MySQL发展历程中所 ...

  8. MySQL 性能调优

    MySQL 性能调优   索引 索引是什么 官方介绍索引是帮助MySQL高效获取数据的数据结构.笔者理解索引相当于一本书的目录,通过目录就知道要的资料在哪里,不用一页一页查阅找出需要的资料. 索引目的 ...

  9. 二十种实战调优MySQL性能优化的经验

    二十种实战调优MySQL性能优化的经验 发布时间:2012 年 2 月 15 日 发布者: OurMySQL 来源:web大本营   才被阅读:3,354 次    消灭0评论     本文将为大家介 ...

  10. MySQL性能调优的10个方法 - mysql数据库栏目

    摘要: https://edu.aliyun.com/a/29036?spm=5176.11182482.related_article.1.hbeZbF 摘要: MYSQL 应该是最流行了 WEB ...

随机推荐

  1. JavaScriptResult

  2. 学习环境搭建2——安装django

    下载django https://www.djangoproject.com/download/ 选择最新的版本Latest release,下载后解压.在含有setup.py的文件夹中执行如下命令: ...

  3. 自定义SearchView实现即时查询

    1.效果图,输入关键字时会根据关键字改变而更新数据. 2.其布局文件和2个小图标del.png和searchview.png,布局文件如下:高度已固定为46dp. <?xml version=& ...

  4. 2019苏州凯美瑞德Java开发面试

    第四家Kmerit,苏州园区,出门晚了差点迟到,一点五十五到达,先花了一小时笔试,后来两个人技术面试,四点二十出了大楼. 一.笔试 1.单选,知识点很散,涉及数据结构链表,数组,树,堆,数据库,网络, ...

  5. UBuntu安裝使用PIP

    Windows下安裝python包還是比較方便的,直接在FLD網站下載對應的EXE文件就可以安裝,在linux系統下,使用pip,easy egg 管理工具可以減輕安裝負擔. 原文鏈接:http:// ...

  6. RabbitMQ学习之spring配置文件rabbit标签的使用

    下面我们通过一个实例看一下rabbit的使用. 1.实现一个消息监听器ReceiveMessageListener.Java package org.springframework.amqp.core ...

  7. SourceInsight使用入门与技巧(转)

    1 sourceinsight screen font 的默认字体是Verdana的,它是一直变宽字体.在Document style中可以将字体改为定宽的Courier 2   document o ...

  8. 动态给某一个元素添加active

    <li class="one_data" data-id='+ navGroup.self_first_nav[i].id +'><a  href='+ navG ...

  9. Pyhhon中一些常见的字符串操作.

    可变变量:list, 字典 不可变变量:元祖,字符串 字符串的操作(去掉空格, 切片, 查找, 连接, 分割, 转换首字母大写, 转换字母大小写, 判断是否是数字字母, 成员运算符(in / not ...

  10. 小白学习Spark系列四:RDD踩坑总结(scala+spark2.1 sql常用方法)

    初次尝试用 Spark+scala 完成项目的重构,由于两者之前都没接触过,所以边学边用的过程大多艰难.首先面临的是如何快速上手,然后是代码调优.性能调优.本章主要记录自己在项目中遇到的问题以及解决方 ...