灵魂腐蚀 发表于 2015-1-16 22:30:44

MSSQL编程:tip:关于range partition 用到多列的一...

恢复到之前的某个状态,是需要数据的。这数据可以是a)回滚步骤或者b)操作之前的数据状态原文。
关于rangepartition用到多列的一个小案例



刘颖博

工夫:2003-12-29

mail:liuyingbo@126.com,请斧正



转载请说明出处及作者



1.理论

起首建分区表



createtablesimng_part(

LATN_IDNUMBER(4)notnull,

pnamechar(200),

MON_IDNUMBER(2)notnull

)

PARTITIONBYRANGE(LATN_ID,MON_ID)

(

PARTITIONPART_A01VALUESLESSTHAN(2000,2)TABLESPACETBS_DATAPCTFREE10STORAGE(INITIAL1024KNEXT1024KMAXEXTENTS2000),

PARTITIONPART_A02VALUESLESSTHAN(2000,3)TABLESPACETBS_DATAPCTFREE10STORAGE(INITIAL1024KNEXT1024KMAXEXTENTS2000),

PARTITIONPART_A12VALUESLESSTHAN(2000,13)TABLESPACETBS_DATAPCTFREE10STORAGE(INITIAL1024KNEXT1024KMAXEXTENTS2000),

PARTITIONPART_B01VALUESLESSTHAN(2003,2)TABLESPACETBS_DATAPCTFREE10STORAGE(INITIAL1024KNEXT1024KMAXEXTENTS2000),

PARTITIONPART_B02VALUESLESSTHAN(2003,3)TABLESPACETBS_DATAPCTFREE10STORAGE(INITIAL1024KNEXT1024KMAXEXTENTS2000),

PARTITIONPART_B12VALUESLESSTHAN(2003,13)TABLESPACETBS_DATAPCTFREE10STORAGE(INITIAL1024KNEXT1024KMAXEXTENTS2000),

PARTITIONPART_D12VALUESLESSTHAN(2020,13)TABLESPACETBS_DATAPCTFREE10STORAGE(INITIAL1024KNEXT1024KMAXEXTENTS2000)

)

/





insertintosimng_partvalues(2000,a,1);

insertintosimng_partvalues(2000,a,2);

insertintosimng_partvalues(2000,a,3);

insertintosimng_partvalues(2002,a,1);

insertintosimng_partvalues(2002,a,3);

insertintosimng_partvalues(2002,a,9);

insertintosimng_partvalues(2019,a,1);



commit;





createtablesimng_part1(

LATN_IDNUMBER(4)notnull,

pnamechar(200),

MON_IDNUMBER(2)notnull

)

PARTITIONBYRANGE(mon_ID,latn_ID)

(

PARTITIONPART_A01VALUESLESSTHAN(2,2000)TABLESPACETBS_DATAPCTFREE10STORAGE(INITIAL1024KNEXT1024KMAXEXTENTS2000),

PARTITIONPART_B01VALUESLESSTHAN(2,2003)TABLESPACETBS_DATAPCTFREE10STORAGE(INITIAL1024KNEXT1024KMAXEXTENTS2000),

PARTITIONPART_A02VALUESLESSTHAN(3,2000)TABLESPACETBS_DATAPCTFREE10STORAGE(INITIAL1024KNEXT1024KMAXEXTENTS2000),

PARTITIONPART_B02VALUESLESSTHAN(3,2003)TABLESPACETBS_DATAPCTFREE10STORAGE(INITIAL1024KNEXT1024KMAXEXTENTS2000),

PARTITIONPART_A12VALUESLESSTHAN(13,2000)TABLESPACETBS_DATAPCTFREE10STORAGE(INITIAL1024KNEXT1024KMAXEXTENTS2000),

PARTITIONPART_B12VALUESLESSTHAN(13,2003)TABLESPACETBS_DATAPCTFREE10STORAGE(INITIAL1024KNEXT1024KMAXEXTENTS2000),

PARTITIONPART_D12VALUESLESSTHAN(13,2020)TABLESPACETBS_DATAPCTFREE10STORAGE(INITIAL1024KNEXT1024KMAXEXTENTS2000)

)

/





insertintosimng_part1values(2000,a,1);

insertintosimng_part1values(2000,a,2);

insertintosimng_part1values(2000,a,3);

insertintosimng_part1values(2002,a,1);

insertintosimng_part1values(2002,a,3);

insertintosimng_part1values(2002,a,9);

insertintosimng_part1values(2019,a,1);

commit;





2.成绩

先思索两个成绩:

试问表simng_part:PART_B01分区中有几笔记录。

试问表simng_part1:PART_A01分区中有几笔记录。







谜底是:

latn_idnamemon_id

第一个

2002a3

2002a1

2002a9

第二个

2000a1

2002a1

2019a1



查询以下:



SQL>select*fromsimng_partpartition(PART_B01);



LATN_IDPNAMEMON_ID

------------------------------------

2002a1

2002a3

2002a9



SQL>select*fromsimng_part1partition(PART_A01);



LATN_IDPNAMEMON_ID

------------------------------------

2000a1

2002a1

2019a1



3.结论



关于rangepartition分区,

起首注重的是,分区不包括下限



同时

关于存在多个列来举行rangepartition

遵守这个准绳:

只需满意第n列前提,就放在这个分区,而不论第n+1列是不是满意!



……………………………………………………………………………………

感激jxc@花城








每个Rows_log_event中包含event_type,可选值为WRITE_ROWS_EVENT、UPDATE_ROWS_EVENT、DELETE_ROWS_EVENT。从宏名字就能看出用途。

兰色精灵 发表于 2015-1-19 15:53:28

大侠们有推荐的书籍和学习方法写下吧。

若相依 发表于 2015-2-3 23:48:38

比如,MicrosoftSQLServer2008的某一个版本可以满足现在的这个业务的需要,而且价格还比Oracle11g要便宜,那么这一产品就是适合的。

仓酷云 发表于 2015-2-9 07:35:08

始终遗憾SQLServer的登陆无法分配CPU/内存占用等指标数。如果你的SQLServer给别人分配了一个只可以读几个表的权限,而这个家伙疯狂的死循环进行连接查询,会给你的系统带来很大的负担。

爱飞 发表于 2015-2-27 04:35:59

比如日志传送、比如集群。。。

小女巫 发表于 2015-3-8 20:23:20

在select语句中可以使用groupby子句将行划分成较小的组,然后,使用聚组函数返回每一个组的汇总信息,另外,可以使用having子句限制返回的结果集。

变相怪杰 发表于 2015-3-16 13:42:05

不过话说回来了,绝大多数的性能优化准则与对sqlserver存储的结构理解息息相关

透明 发表于 2015-3-22 23:10:40

你可以简单地认为适合的就是好,不适合就是不好。
页: [1]
查看完整版本: MSSQL编程:tip:关于range partition 用到多列的一...