zoukankan      html  css  js  c++  java
  • mysql优化---笔记

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

    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 

  • 相关阅读:
    鹅厂女专家:用“爱折腾”实现跨界之美
    基于腾讯云的视频聊天研究
    iOS微信内存监控
    2017年数据库技术盘点
    如何做好游戏内实时语音体验
    腾讯云微计算实践:从Serverless说起,谈谈边缘计算的未来
    使用腾讯云“自定义监控”监控GPU使用率
    如何在Python中从零开始实现随机森林
    DataGridView 设置某个列为只能为数字
    Ieditor
  • 原文地址:https://www.cnblogs.com/DaBing0806/p/5196194.html
Copyright © 2011-2022 走看看