V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
MySQL 5.5 Community Server
MySQL 5.6 Community Server
Percona Configuration Wizard
XtraBackup 搭建主从复制
Great Sites on MySQL
Percona
MySQL Performance Blog
Severalnines
推荐管理工具
Sequel Pro
phpMyAdmin
推荐书目
MySQL Cookbook
MySQL 相关项目
MariaDB
Drizzle
参考文档
http://mysql-python.sourceforge.net/MySQLdb.html
tanteng
V2EX  ›  MySQL

既然 MySQL 可以分区,那为什么很多时候我们还是手动分表呢?

  •  
  •   tanteng ·
    tanteng · 2016-06-11 17:06:12 +08:00 · 5218 次点击
    这是一个创建于 3086 天前的主题,其中的信息可能已经有所发展或是发生改变。

    如题。

    第 1 条附言  ·  2016-06-11 17:48:47 +08:00
    这一定也是因为 MySQL 分区有不好的原因,常见的都是把数据库进行分表,而不是在 MySQL 层面进行分区,谁仔细讲解下。
    15 条回复    2016-06-19 05:55:40 +08:00
    realpg
        1
    realpg  
       2016-06-11 17:08:32 +08:00
    u can try
    heraldboy
        2
    heraldboy  
       2016-06-11 17:24:48 +08:00
    默认喜欢自己控制局面
    xinyewdz
        3
    xinyewdz  
       2016-06-11 17:46:23 +08:00
    我司现在用的是 mysql 的分区,省事。公司也没有人手去开发手动分表。
    kslr
        4
    kslr  
       2016-06-11 19:38:39 +08:00 via Android
    在高性能 mysql 第 7 章分区表中有分析
    Sunyanzi
        5
    Sunyanzi  
       2016-06-11 19:52:08 +08:00   ❤️ 1
    事实上在大多数应用中我会更推荐使用分区而不是分表 ... 除非大型应用我会在分区的基础上再分表 ...

    具体就不展开说了 ... 太麻烦 ... 知道上面结论就行 ... 以及如果你想知道分区有什么不好的话 ... RTFM ...

    https://dev.mysql.com/doc/refman/5.7/en/partitioning-limitations.html
    realpg
        6
    realpg  
       2016-06-12 10:23:00 +08:00
    分区不包治百病
    很多时候要根据逻辑去多重条件分表,以防止不合适的锁降低性能
    分区只适应一些简单情况。
    joshyu8
        7
    joshyu8  
       2016-06-12 10:57:43 +08:00
    现在应该很少有人分表,
    压力大了就直接分库
    tanteng
        8
    tanteng  
    OP
       2016-06-12 11:49:21 +08:00
    @joshyu8 分库不能解决单张表大的问题啊,还是要分表
    realpg
        9
    realpg  
       2016-06-12 11:55:20 +08:00
    @tanteng
    单张表大并不是什么问题
    检索速度慢 以及锁才是问题


    @joshyu8
    无语
    tanteng
        10
    tanteng  
    OP
       2016-06-12 12:10:12 +08:00
    @realpg 就是因为单张表大检索慢所以才分表啊,但为什么都是分表,而不是分区,分区不好吗,好像更方便一点啊
    joshyu8
        11
    joshyu8  
       2016-06-12 13:29:34 +08:00
    @tanteng 我是用 Python 的,从 django 有 2 个开源的水平扩展的库,早期有使用分表的,后面都改成了分区。而 Django 官方只提供了分库的功能,水平分库是可能解决单表过大的问题
    joshyu8
        12
    joshyu8  
       2016-06-12 13:33:11 +08:00
    《高性能 MySQL 》那本书里面也有提到 分表 的管理混乱问题,所以也是推荐分区。只是分区的后,要让 coder 知道分区的存在,不然查询不当会造成 扫描所有分区。
    realpg
        13
    realpg  
       2016-06-12 17:38:47 +08:00
    @tanteng
    检索慢跟单张表的大小没有确定的联系。
    检索条件,索引,模糊检索设计都有影响

    分区只能解决有限的几种检索慢的问题

    分表是完全自定义的自己掌控的,结合索引,目标检索分布,一个设计充分的分表方式能百倍的降低数据库负载
    surfire91
        14
    surfire91  
       2016-06-12 18:37:00 +08:00
    分区和分表都是同一个时代的产物,原理其实也差不多。
    MYSQL 分区在操作上更简便,倒是有一定局限性。 分表的灵活性大,但是操作较分区更繁琐。
    wweir
        15
    wweir  
       2016-06-19 05:55:40 +08:00 via Android
    如果你的压力瓶颈不是磁盘 IO ,那分区就没有意义。
    分库分表之后可以方便的实现其它方案来解决这些压力
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2639 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 05:10 · PVG 13:10 · LAX 21:10 · JFK 00:10
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.