zoukankan      html  css  js  c++  java
  • 19、数据库为什么要进行分库和分表呢?都放在一个库或者一张表中不可 以吗?

    分库与分表的目的在于,减小数据库的单库单表负担,提高查询性能,缩短查询时间。

    通过分表,可以减少数据库的单表负担,将压力分散到不同的表上,同时因为不同的表上的数据量少了,起到提高查询性能,缩短查询时间的作用,此外,可以很大的缓解表锁的问题。 分表策略可以归纳为垂直拆分和水平拆分:

    水平分表:取模分表就属于随机分表,而时间维度分表则属于连续分表。 如何设计好垂直拆分,我的建议:将不常用的字段单独拆分到另外一张扩展表. 将大文本的字段单独拆 分到另外一张扩展表, 将不经常修改的字段放在同一张表中,将经常改变的字段放在另一张表中。 对于海量用户场景,可以考虑取模分表,数据相对比较均匀,不容易出现热点和并发访问的瓶颈。

    库内分表,仅仅是解决了单表数据过大的问题,但并没有把单表的数据分散到不同的物理机上,因此并不能减轻 MySQL 服务器的压力,仍然存在同一个物理机上的资源竞争和瓶颈,包括 CPU、内存、磁盘 IO、网络带宽等。

    分库与分表带来的分布式困境与应对之策

    数据迁移与扩容问题----一般做法是通过程序先读出数据,然后按照指定的分表策略再将数据写入到各 个分表中。

    分页与排序问题----需要在不同的分表中将数据进行排序并返回,并将不同分表返回的结果集进行汇总 和再次排序,最后再返回给用户。

  • 相关阅读:
    【PowerOJ1736&网络流24题】飞行员配对方案问题(最小割)
    MySQL的锁机制
    Hadoop相关基础知识
    ICMP基础知识
    关于CPU的一些基础知识
    关于内存的一些基础知识
    MySQL查询优化
    MapReduce初探
    压缩解压缩相关基础知识
    后台服务相关基础知识
  • 原文地址:https://www.cnblogs.com/crbhf/p/15144739.html
Copyright © 2011-2022 走看看