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。从宏名字就能看出用途。 大侠们有推荐的书籍和学习方法写下吧。 比如,MicrosoftSQLServer2008的某一个版本可以满足现在的这个业务的需要,而且价格还比Oracle11g要便宜,那么这一产品就是适合的。 始终遗憾SQLServer的登陆无法分配CPU/内存占用等指标数。如果你的SQLServer给别人分配了一个只可以读几个表的权限,而这个家伙疯狂的死循环进行连接查询,会给你的系统带来很大的负担。 比如日志传送、比如集群。。。 在select语句中可以使用groupby子句将行划分成较小的组,然后,使用聚组函数返回每一个组的汇总信息,另外,可以使用having子句限制返回的结果集。 不过话说回来了,绝大多数的性能优化准则与对sqlserver存储的结构理解息息相关 你可以简单地认为适合的就是好,不适合就是不好。
页:
[1]