zoukankan      html  css  js  c++  java
  • 如何处理MySQL每月5亿的数据

    第一阶段:
    1,一定要正确设计索引
    2,一定要避免SQL语句全表扫描,所以SQL一定要走索引(如:一切的 > < != 等等之类的写法都会导致全表扫描)
    3,一定要避免 limit 10000000,20 这样的查询
    4,一定要避免 LEFT JOIN 之类的查询,不把这样的逻辑处理交给数据库
    5,每个表索引不要建太多,大数据时会增加数据库的写入压力

    第二阶段:

    1,采用分表技术(大表分小表)

    a)垂直分表:将部分字段分离出来,设计成分表,根据主表的主键关联
    b)水平分表:将相同字段表中的记录按照某种Hash算法进行拆分多个分表

    2,采用mysql分区技术(必须5.1版以上,此技术完全能够对抗Oracle),与水平分表有点类似,但是它是在逻辑层进行的水平分表

    第三阶段(服务器方面):

    1,采用memcached之类的内存对象缓存系统,减少数据库读取操作
    2,采用主从数据库设计,分离数据库的读写压力
    3,采用Squid之类的代理服务器和Web缓存服务器技术

    PS:由于篇幅问题,我只简单说一些基本概念,其实里面每个知识点关系到的内容都很多。特别是第一阶段,很多工作几年的程序员,都不能完全理解。我觉得要真正理解索引,最好的办法就是在1000W-亿级以上的数据,进行测试SQL语句,再结合 explain 命令进行查看SQL语句索引情况。
  • 相关阅读:
    ZROI2018提高day5t1
    noi.ac day1t1 candy
    ARC102E Stop. Otherwise...
    TOP命令详解(负载情况)
    mysql 时间函数 时间转换函数
    maven编译时错误:无效的目标发行版
    jsp base路径
    mybatis typehandler
    终极解决方案 at org.apache.jsp.index_jsp._jspInit(index_jsp.java:22) 报空指针
    【转】 IntelliJ IDEA像Eclipse一样打开多个项目
  • 原文地址:https://www.cnblogs.com/siyunianhua/p/10250580.html
Copyright © 2011-2022 走看看