标签归档:erp

SQL 2008企业版数据库 转 标准版方法


1 查询和修改压缩表(行压缩 页压缩)功能


SELECT DISTINCT
SCHEMA_NAME(o.schema_id)  + '.' + OBJECT_NAME(o.object_id) AS TableName,
i.name AS IndexName,
p.data_compression_desc AS CompressionType,
i.type_desc AS StorageType
FROM sys.partitions  p  with(nolock)
INNER JOIN sys.objects o with(nolock)
ON p.object_id = o.object_id 
JOIN sys.indexes i 
ON p.object_id = i.object_id
AND i.index_id = p.index_id
WHERE p.data_compression > 0 
AND SCHEMA_NAME(o.schema_id) <> 'SYS' 


如下图所示:
(返回的查询条件中,有显示此表的压缩类型)
查询系统存在的压缩表


修改表压缩的方式

方式一:

在压缩表上点击”右键” —>”管理压缩”–>压缩类型选择”NONE”,点击”立即运行”。

方式二:
ALTER TABLE [表名] REBUILD PARTITION = ALL
WITH (DATA_COMPRESSION = NONE)


2 查询和修改表分区


查询使用表分区的表

SELECT t.object_id AS Object_ID, t.name AS TableName, ic.column_id
 as PartitioningColumnID, c.name AS PartitioningColumnName 
  FROM sys.tables AS t
  JOIN sys.indexes AS i
      ON t.object_id = i.object_id
  JOIN sys.columns AS c
      ON t.object_id = c.object_id
  JOIN sys.partition_schemes AS ps
      ON ps.data_space_id = i.data_space_id
  JOIN sys.index_columns AS ic
      ON ic.object_id = i.object_id AND ic.index_id = i.index_id 
      AND ic.partition_ordinal > 0

分区表修正方法

2.1 修改原分区表表名(A)-变更为(B)

EXEC sp_rename ‘A’, ‘B’

2.2 新建一张新表(A)

CREATE TABLE [dbo].[A](
[KeyId] [bigint] IDENTITY(1,1) NOT NULL,
[TmpId] [varchar](5) NOT NULL,
[tmpName] [varchar](60) NOT NULL,
[qty] [int] NOT NULL
)
GO

SET ANSI_PADDING OFF
GO

ALTER TABLE [dbo].[A] ADD CONSTRAINT [DF_AChange_innRtnQty] DEFAULT ((0)) FOR [qty]
GO

2.3 将数据表(B)中的数据插入至表(A)中
SET IDENTITY_Insert A ON

insert into A(keyId,tmpId,tmpName,qty)
select keyId,tmpId,tmpName,qty from B

SET IDENTITY_Insert A OFF

2.4 删除数据表(B)

truncate table [B]
drop table [B]



注意标识列
默认值是否正常
注意重新建表时 以前的索引名称 默认值约束名称需要变更

插入数据时

SET IDENTITY_Insert [表名] ON
insert into [表名]([列名1],[列名2],[列名3])
select [列名1],[列名2],[列名3] from [源表名]
SET IDENTITY_Insert [表名] OFF



3 查询 并 删除分区函数 分区方案



3.1 查看系统中的分区方案
select * from sys.partition_schemes

删除分区方案名称
3.2 DROP PARTITION SCHEME 分区方案名称;


3.3 查看系统中存在的分区函数
 select * from sys.partition_functions

 


3.4 删除分区函数
DROP PARTITION FUNCTION 分区函数名称;

相关阅读:
mssql 标准版 企业版区别

kv数据库–简介

kv数据库:
key-Value数据库,NOSQL,内存数据库
可以按照键值对的形式存储数据,数据被存放在内存中,减少读写磁盘的次数,加快数据访问速度。
KV数据库优缺点:
kv数据库不支持ACID特性;

kv数据库举例
Redis
Leveldb
Mongodb
HBase

系统中性能需求定义[转载]

转自: http://www.infoq.com/cn/news/2015/02/define-performance-requirements

JVM监控解决方案提供商 Plumbr的官方博客上发表了一篇题为《 如何定义性能需求》的文章。
文章指出,随着企业信息化程度的提高,
业务人员对软件功能性需求的描述越来越好。
但涉及到易用性、兼容性或性能等非功能性需求的时候,他们经常会不得要领。
比如,他们可能会提出“它的运行速度要快”这样的性能需求。
在更好的情况下,他们可能会提出下面这样的性能需求:

在系统中执行的操作,95%的都必须在5秒针内响应;
系统必须支持100并发用户。
初看上去,这样的需求已经好了很多了。
但实际上,它们甚至比只用一个“快”字描述更差。
虽然它们包含了一些数字,看上去似乎可以作为开发人员的终极目标。但实际上,这两个需求最多只能为关于性能需求的讨论开一个头。

文章接下来对上述两个需求进行了剖析。

第一个需求没有提出针对其它5%的操作的性能需求。而且,不同的功能对性能的需求也不尽相同。
比如,对于功能“显示当前账户余额”和“显示2013年所有的交易”
,前者5秒响应可能都略显慢,而后者响应时间再长一些也可以接受。
因此,性能需求描述应该:
针对不同的操作类型指定可接受的时间延迟;
将时间延迟相关的需求与负载/吞吐量相关的需求联系起来;
明确时间延迟的测量位置,
比如,延迟时间是以客户端为标准,还是以服务器端发送出最后一个字节为标准;
哪些操作的时间延迟不太要紧。
第二个需求看上去很准确,实际上很笼统。
比如,将“100个并发用户”理解成“100个线程处理100个并发操作”。
如果每个操作用时1秒,那么系统吞吐量为100 ops/sec;
但如果每个操作用时10秒,那么系统吞吐量则只有10 ops/sec。
对于后一种情况,我们不能认为它满足“100个并发用户”的需求。
因此,需求应该更清楚地描述特定用户的行为,而不是用“并发用户”这样的术语。
当然,这里并不是说建议测量吞吐量,因为现实世界的应用程序往往是多功能的,很难使用吞吐量来衡量其性能。

本文还提到了容量规划,即在什么样的前提条件下实现上述性能需求,包括如下三个方面:
系统的数据量;
系统的基础设施限制,比如,CPU、内存等;
系统的部署环境,比如,网络带宽是多少,是否需要离线操作等。
总之,应该与业务人员紧密合作,制定出可测量的、具体的性能需求。

————————————————————————
结合实际情况:
平常遇见的性能主要速度要快,简洁明了。