通过分区(Partition)提升MySQL性能 (转)
文章来源:本站整理收集 文章录入:陈洁绫 【放大字体 缩小字体】
< date '1995-12-31';[/size] [/size][/align][/align][align=left][align=left][size=12pt][size=2] ---------- [/size] [/size][/align][/align][align=left][align=left][size=12pt][size=2]| count(*) |[/size] [/size][/align][/align][align=left][align=left][size=12pt][size=2] ---------- [/size] [/size][/align][/align][align=left][align=left][size=12pt][size=2]| 795181 |[/size] [/size][/align][/align][align=left][align=left][size=12pt][size=2] ---------- [/size] [/size][/align][/align][align=left][align=left][size=12pt][size=2]1 row in set (3.88 sec)[/size] [/size][/align][/align][align=left][align=left][size=12pt][size=2]mysql> explain select count(*) from no_part_tab where[/size] [/size][/align][/align][align=left][align=left][size=12pt][size=2] -> c3 > date '1995-01-01' and c3 < date '1995-12-31'\G[/size] [/size][/align][/align][align=left][align=left][size=12pt][size=2]*************************** 1. row ***************************[/size] [/size][/align][/align][align=left][align=left][size=12pt][size=2] id: 1[/size] [/size][/align][/align][align=left][align=left][size=12pt][size=2] select_type: SIMPLE[/size] [/size][/align][/align][align=left][align=left][size=12pt][size=2] table: no_part_tab[/size] [/size][/align][/align][align=left][align=left][size=12pt][size=2] type: ALL[/size] [/size][/align][/align][align=left][align=left][size=12pt][size=2]possible_keys: NULL[/size] [/size][/align][/align][align=left][align=left][size=12pt][size=2] key: NULL[/size] [/size][/align][/align][align=left][align=left][size=12pt][size=2] key_len: NULL[/size] [/size][/align][/align][align=left][align=left][size=12pt][size=2] ref: NULL[/size] [/size][/align][/align][align=left][align=left][size=12pt][size=2] rows: 8000000[/size] [/size][/align][/align][align=left][align=left][size=12pt][size=2] Extra: Using where[/size] [/size][/align][/align][align=left][align=left][size=12pt][size=2]1 row in set (0.00 sec)[/size] [/size][/align][/align][align=left][align=left][size=12pt][size=2]mysql> explain partitions select count(*) from part_tab where[/size] [/size][/align][/align][align=left][align=left][size=12pt][size=2] -> c3 > date '1995-01-01' and c3 < date '1995-12-31'\G[/size] [/size][/align][/align][align=left][align=left][size=12pt][size=2]*************************** 1. row ***************************[/size] [/size][/align][/align][align=left][align=left][size=12pt][size=2] id: 1[/size] [/size][/align][/align][align=left][align=left][size=12pt][size=2] select_type: SIMPLE[/size] [/size][/align][/align][align=left][align=left][size=12pt][size=2] table: part_tab[/size] [/size][/align][/align][align=left][align=left][size=12pt][size=2] partitions: p1[/size] [/size][/align][/align][align=left][align=left][size=12pt][size=2] type: ALL[/size] [/size][/align][/align][align=left][align=left][size=12pt][size=2]possible_keys: NULL[/size] [/size][/align][/align][align=left][align=left][size=12pt][size=2] key: NULL[/size] [/size][/align][/align][align=left][align=left][size=12pt][size=2] key_len: NULL[/size] [/size][/align][/align][align=left][align=left][size=12pt][size=2] ref: NULL[/size] [/size][/align][/align][align=left][align=left][size=12pt][size=2] rows: 798458[/size] [/size][/align][/align][align=left][align=left][size=12pt][size=2] Extra: Using where[/size] [/size][/align][/align][align=left][align=left][size=12pt][size=2]1 row in set (0.00 sec)[/size] [/size][/align][/align][align=left][size=12pt][size=2]从上面结果可以容易看出,设计恰当表分区能比非分区的减少90%的响应时间。而命令解析Explain程序也告诉我们在对已分区的表的查询过程中仅对第一个分区进行了扫描,其他都跳过了。[/size] [/size][/align][align=left][size=12pt][size=2]哔厉吧拉,说阿说……反正就是这个[/size][/size][/align]