zoukankan      html  css  js  c++  java
  • 【58沈剑架构系列】互联网公司为啥不使用mysql分区表?

    缘起:有个朋友问我分区表在58的应用,我回答不出来,在我印象中,百度、58都没有听说有分区表相关的应用,业内进行一些技术交流的时候也更多的是自己分库分表,而不是使用分区表。于是去网上查了一下,并询问了58到家的DBA专家,将自己收到的信息沉淀下来,share给大伙。

    解决什么问题?

    回答:当mysql单表的数据库过大时,数据库的访问速度会下降,“数据量大”问题的常见解决方案是“水平切分”。

    mysql常见的水平切分方式有哪些?

    回答:分库分表,分区表

    什么是mysql的分库分表?

    回答:把一个很大的库(表)的数据分到几个库(表)中,每个库(表)的结构都相同,但他们可能分布在不同的mysql实例,甚至不同的物理机器上,以达到降低单库(表)数据量,提高访问性能的目的。

    分库分表往往是业务层实施的,分库分表后,为了满足某些特定业务功能,往往需要rd修改代码。

    什么是mysql的分区表?

    回答:所有数据还在一个表中,但物理存储根据一定的规则放在不同的文件中。这个是mysql支持的功能,业务rd代码无需改动。

    看上去分区表很帅气,为什么大部分互联网还是更多的选择自己分库分表来水平扩展咧?

    回答:

    1)分区表,分区键设计不太灵活,如果不走分区键,很容易出现全表锁

    2)一旦数据量并发量上来,如果在分区表实施关联,就是一个灾难

    3)自己分库分表,自己掌控业务场景与访问模式,可控。分区表,研发写了一个sql,都不确定mysql是怎么玩的,不太可控

    4)运维的坑,嘿嘿

    5)…

    文章很短,一分钟搞定,希望大家有收获,有任何疑问欢迎提出,我不懂的再去问DBA专家。如果大家有分区表的应用,踩了什么坑,亦可回复,我下一篇文章share出来。

    埋坑:如何来进行水平切分,分库分表?如果大伙感兴趣,后续和大家聊更多的数据库架构。

    【文章转载自微信公众号“架构师之路”】

  • 相关阅读:
    递归的一些应用(一)遍历文件夹
    获取指定路径下文件夹所有文件的大小
    JavaScript Color Picker
    在ASP.NET中,用javascript给CuteEditor控件赋值
    通过URL判断文件是否有存在
    语音验证码
    [链接].net 学习网站
    [音乐]梦中的婚礼
    [转载]天堂猎人影院的爱情狩猎
    为应用程序添加消息过滤器
  • 原文地址:https://www.cnblogs.com/codeon/p/8287913.html
Copyright © 2011-2022 走看看