MYSQL分区分表单表数据量和存储空间的最佳临界如何把控

在实际生产中,单纯的分区分表并不一定能达到性能最大化,在对实际的单表数据量和存储空间的临界需要好好把控,这个实际临界点往往在很大程度上影响到数据写入读取的性能

参与6

2同行回答

liucj2004liucj2004  其它 , undefined
先说分区,MySQL里面相当于物理上多张表,逻辑上一张表,存在同一个实例中一般来说当单表上千万的时候就要考虑分区了,然而分区的条件或者分区键的选择很重要:首先查询的时候,分区键最好和常用的查询条件相对应,这样一来,每次查询可以自动到相应的分区上,比如说经常以地区为查询条件...显示全部

先说分区,MySQL里面相当于物理上多张表,逻辑上一张表,存在同一个实例中
一般来说当单表上千万的时候就要考虑分区了,
然而分区的条件或者分区键的选择很重要:
首先查询的时候,分区键最好和常用的查询条件相对应,这样一来,每次查询可以自动到相应的分区上,比如说经常以地区为查询条件。
然后说一下插入,不建议用自增主键做分区键,这样一来所有的写操作就会在单个分区上,造成写热点问题。
另外hash分区的话,写效率是最高的,但是查询的时候每次都要全分区扫描。

然后说分表,分表数据量支持更大,因为存在了不同实例或者不同服务器中,这个需要有应用端,或者自己开发一个中间件来实现。因为直接也业务或者实现方式相关,这里就不展开了。

收起
农业其它 · 2017-07-07
浏览2248
冯帅冯帅  数据库管理员 , 贝壳金服
是可以这么做的,在mysql里 不管你是分区 还是分表 都可以指定到不同的目录的partition_definition:PARTITION partition_name [VALUES {LESS THAN {(expr | value_list) | MAXVALUE} | IN (value_list)}] [[STORAGE] ENGINE [=] engine_n...显示全部

是可以这么做的,在mysql里 不管你是分区 还是分表 都可以指定到不同的目录的
partition_definition:

PARTITION partition_name
    [VALUES
        {LESS THAN {(expr | value_list) | MAXVALUE}
        |
        IN (value_list)}]
    [[STORAGE] ENGINE [=] engine_name]
    [COMMENT [=] 'comment_text' ]
    [DATA DIRECTORY [=] 'data_dir']
    [INDEX DIRECTORY [=] 'index_dir']
收起
融资租赁 · 2017-07-07
浏览2262

提问者

hht202208
业务部门经理aaaa
擅长领域: 数据库服务器中间件

问题来自

相关资料

问题状态

  • 发布时间:2017-07-07
  • 关注会员:4 人
  • 问题浏览:5439
  • 最近回答:2017-07-07
  • X社区推广