​一、优化方法:(加粗部分为比较重要的)

1、数据表设计合理;2、索引优化;3、SQL语句优化,定位慢查询explain ;4、分表技术、分区技术;5、读写分离(配置);6、创建适当的存储过程、函数、触发器’7、my.ini配置优化;8、软硬件升级;

1、表的设计满足3nf(范式)

a、1nf 指表的列具有原子性,不可再分。关系型数据库天然满足1nf

b、2nf表中不能有完全重复的记录。一般通过自增主键实现

c、3nf 列的内容可以推导出的,那就不要单独一列存放。也就是说,比如一个学生肯定会有班级、系等信息,所以可以另外新建class表,两表关联

2、索引(B-tree)优化、定位慢查询explain

创建海量表,例如800万条完全不同的数据,这时,我们需要使用存储过程完成。

为了防止创建存储过程冲突,定义一个新的命令结束符,如下:

在mysql里面创建一个函数(用于随机返回指定的个数字符串),这个函数可以直接被使用,也可以被php所使用 select rand_string(10) from 表

用随机函数,生产海量数据,构建大表

大表构建完成以后

海量表带来的问题,速度太慢

a、先使用索引尝试解决

但是要考虑到,索引是有开销的,如果占了大量内存,例如1G,最好还是考虑分表的好。

b、定位慢查询explain

怎么分析慢语句---使用explain

5、优化

如何选择存储引擎:

现在越来越多使用innoDB (并发性好)

读、插入操作为主,少量更新、删除操作,并且对事务的完整性要求不高,选择MyISM,其优点是速度快(尤其适合论坛帖子、新闻、商品列表)

InnoDB 提供事务安全,写的操作会比较差一点,占用更多的磁盘空间,(尤其适合对安全性要求比较高的,积分、余额、账户)

Memory(访问频繁,变化频繁,不需要入库的数据,例如用户登录状态)

选择合适的数据类型:

http://c.biancheng.net/cpp/html/1466.html 

mysql优化---笔记的更多相关文章

  1. (转)MySQL优化笔记(八)--锁机制超详细解析(锁分类、事务并发、引擎并发控制)

    当一个系统访问量上来的时候,不只是数据库性能瓶颈问题了,数据库数据安全也会浮现,这时候合理使用数据库锁机制就显得异常重要了. 原文:http://www.jianshu.com/p/163c96983 ...

  2. mysql系列十一、mysql优化笔记:表设计、sql优化、配置优化

    可以从这些方面进行优化: 数据库(表)设计合理 SQL语句优化 数据库配置优化 系统层.硬件层优化 数据库设计 关系数据库三范式 1NF:字段不可分; 2NF:有主键,非主键字段依赖主键; 3NF:非 ...

  3. mysql优化笔记之分页

    过年闲得蛋疼,于是看看mysql优化,看了网上好多关于分页的优化方法,但是呢,我亲自试上一把的时候,没有出现他们说的现象...难道是我的机器问题么? 下面看看我的实践记录,希望看到的加入进来交流一下O ...

  4. [数据库系列之MySQL]Mysql优化笔记

    大型网站提速之MySql优化 数据库优化包括的方面 数据库优化是一个综合性的技术,并不是通过某一种方式让数据库效率提高很多,而是通过多方面的提高,从而使得数据库提高很多. 主要包括: 1.表的设计合理 ...

  5. mysql 优化笔记

    数据表总共81万条数 SQL explain ); 执行时间超级长,没有等到执行完成就终止了太慢了 explain一下 发现表bb 的select_type 为DEPENDENT SUBQUERY   ...

  6. mysql优化笔记

    query_cache_size 查询缓存 query_cache_type缓存是否打开 OFF/ON read_buffer_size读缓存SET GLOBAL query_cache_size=1 ...

  7. (转)MySQL优化系列

    原文:http://blog.csdn.net/jack__frost/article/details/71194208 数据库,后端开发者必学,而且现在以MySQL居多.这个系列将系统化MySQL一 ...

  8. MySQL学习笔记(三)数据优化

    第1章 数据库优化简介1-1 MySQL优化简介 第2章 SQL语句优化2-1 数据准备 2-2 MySQL慢查日志的开启方式 2-3 MySQL慢查日志分析工具之 mysqldumpslow www ...

  9. SQL学习笔记之项目中常用的19条MySQL优化

    在写文章之前,首先感谢 飞友科技 陆老师提供的文档.. 声明一下:下面的优化方案都是基于 “ Mysql-索引-BTree类型 ” 的 0x00 EXPLAIN 做MySQL优化,我们要善用 EXPL ...

随机推荐

  1. 使用WrapPanel和DockPanel

    WrapPanel和DockPanel也是连个比较简单的布局容器,这两个空间将弥补StackPanel的某些不足,该开发人员更多可选择的布局方式,这两个作用如下: WrapPanel控件:该控件根据O ...

  2. 文件夹操作之判断是否存在(Directory)

    Directory类用于操作文件夹,用于创建.移动和枚举目录和子目录的静态方法.DirectoryInfo类用于典型操作,如复制,移动,重命名,创建和删除目录.他们都可用于获取和设置相关属性或有关创建 ...

  3. WPF: RenderTransform特效

    WPF中的变形(RenderTransform)类是为了达到直接去改变某个Silverlight对象的形状(比如缩放.旋转一个元素)的目的而设计的,RenderTransform包含的变形属性成员就是 ...

  4. 使用http维持socket长连接

    项目中有遇到问题如下: 1.旧版的cs服务,因为每个用户和唯一的长连接是在登录后绑定的,并且所有的消息报文均是基于该长连接去发送接收的,所以要求node服务要维持一个长连接,然后根据该用户获取长连接, ...

  5. block中self关键字的使用-防止self 被retain一次

    在代码块中使用对象的成员时(成员变量是属性strong,MRC估计是retain时效果一样,使用方法时也一样): 警告: capturing self strongly in this block i ...

  6. 撩课-Java每天5道面试题第15天

    撩课Java+系统架构点击开始学习 106.什么是Hibernate的并发机制?怎么去处理并发问题? a.Hibernate的Session对象是非线程安全的, 对于单个请求,单个会话, 单个的工作单 ...

  7. LeetCode GrayCode

    class Solution { public: vector<int> grayCode(int n) { vector<int> res; res.push_back(); ...

  8. [转]web使用Quartz.NET实现作业调度

    转自 https://www.cnblogs.com/best/p/7658573.html 一.Quartz.NET介绍 Quartz.NET是一个强大.开源.轻量的作业调度框架,是 OpenSym ...

  9. 02.CSS选择器-->:focus

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  10. is_array判断是否为数组

    if(is_array($arr)){ echo "是数组"; }else{ echo "不是数组"; }