数据库优化之分表?

数据库优化之分表?

  • 一、数据库优化之分表?
  • 二、数据库优化之读写分离

一、数据库优化之分表?

  分表分为水平(按行)分表和垂直(按列)分表

  根据经验,Mysql表数据一般达到百万级别,查询效率会很低,容易造成表锁,甚至堆积很多连接,直接挂掉;水平分表能够很大程度减少这些压力。按行数据进行分表。

  如果一张表中某个字段值非常多(长文本、二进制等),而且只有在很少的情况下会查询。这时候就可以把字段多个单独放到一个表,通过外键关联起来。

水平分表策略:
  1.按时间分表
    这种分表方式有一定的局限性,当数据有较强的实效性,如微博发送记录、微信消息记录等,这种数据很少有用户会查询几个月前的数据,如就可以按月分表。
  2.按区间范围分表
    一般在有严格的自增id需求上,如按照user_id水平分表:
    table_1 user_id从1~100w
    table_2 user_id从101~200w
    table_3 user_id从201~300w
  3.hash分表*****
    通过一个原始目标的ID或者名称通过一定的hash算法计算出数据存储表的表名,然后访问相应的表。

二、数据库优化之读写分离

  一台数据库支持的最大并发连接数是有限的,如果用户并发访问太多。一台服务器满足不了要求是可以进行集群处理的。Mysql的集群处理技术最常用的就是读写分离。
数据库优化之分表?_第1张图片
主从同步

  数据库最终会把数据持久化到磁盘,如果集群必须确保每个数据库服务器的数据是一致的。能改变数据库数据的操作都往主数据库去写,而其他的数据库从主数据库上同步数据。

读写分离
  使用负载均衡来实现写的操作都往主数据去,而读的操作往从服务器去。

你可能感兴趣的:(The,interview,questions,java,intellij,idea,数据库)