|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
支持AIX、FreeBSD、HP-UX、Linux、MacOS、NovellNetware、OpenBSD、OS/2Wrap、Solaris、Windows等多种操作系统的确,数据库的保护经常交给那些专业的数据库办理员,可是作为一个开辟者,你大概偶然必要临时处置这个事情。以是,试一试这两个SQL服务器保护技能:轻松改动数据库具有者、收拾索引碎片。谁会想到你乃至能够给那些数据库办理员教上一两个新技能呢?
重指定命据库具有者
当复兴大概新建数据库时,你有无注重到SQLServer把数据库的具有者置为你的NT登录名?仅仅为了确保分歧数据库间的分歧性(更别提平安性要素了),你大概思索用体系历程sp_changedbowner来把数据库具有者改成别的用户如体系办理员(SA)。你大概已写了如许一段剧本用来扫描一切用户数据库并把数据库具有者重指定为体系办理员。
体系历程sp_changedbowner有一个参数,即@map,其缺省值为空(null),该历程能够把数据库旧有的具有者的别号重映照为新的数据库具有者,如体系办理员。
为了演示该历程,让我们起首创建一个尽量小的数据库模子,然后运转sp_helpuser指令来看看新创立的用户名清单:
CREATEDATABASEtest
GO
USEtest
GO
EXECsp_helpuser
GO
这些代码实行后,输入应当列出数据库具有者的清单(db_owner)。假如你利用WindowsNT认证身份,那末清单中应当有一个NULL的登录名字和一个SID值。
然后,让我们加上两个登任命户:ISUser1和ISUser2作为db_owner的别号,并把数据库的具有者改成体系办理员:EXECsp_addlogin@loginame=ISUser1,@passwd=ISUser1,@defdb=master
EXECsp_addlogin@loginame=ISUser2,@passwd=ISUser2,@defdb=master
EXECsp_addalias@loginame=ISUser1,@name_in_db=dbo
EXECsp_changedbowner@loginame=sa,@map=TRUE
EXECsp_helpuser
输入内容应当显现出体系办理员作为db_owner、ISUser1作为db_owner的别号。
如今我们用历程sp_changedbowner来指定ISUser2为数据库新的具有者。我们将利用该历程的@map参数并把该参数赋值为“否”,如许把用户将为别号。
EXECsp_changedbowner@loginame=ISUser2,@map=FALSE
EXECsp_helpuser
GO
输入应当显现出ISUser2如今成为数据库新的具有者,ISUser1降为别号。上面,我们应当中断这个数据库并停止本演示历程。
USEmaster
GO
DROPDATABASEtest
GO
用DBCCINDEXDEFRAG命令来完成保护
对索引举行保护事情是一件冗杂吃力的事情,不外在SQLServer2000中,微软已引进了一条保护命令DBCCINDEXDEFRAG,它绝对SQLServer7.0的DBREINDEX命令来讲,有好几个长处。最次要的长处就是它是一种在线操纵,如许,在该命令运转时代用户仍能够一连事情。这是由于它不像DBREINDEX那样在运转时必要锁定操纵所触及的资本,它还能够下降内容堵塞。
DBCCINDEXDEFRAG操纵一小段、一小段的数据,如许该操纵随时都能够中断上去并跟踪它已完成的事情。该操纵每隔五分钟就呈报一次估量已完成事情的百分比。
从手艺的角度来看,DBCCINDEXDEFRAG重新布置了方针索引地点确当前分派页上的物理叶。当操纵完成后,方针索引的物理按次与它的逻辑按次绝对应,因而能够减速索引的扫描速率。
该操纵还从头布置分派分派给方针索引的空间中的别的索引页。SQLServer将会为以一个添补因子为方针、依据索引数据的密度和为该索引分派的空间巨细,来为索引缓冲页上的空间。操纵后空上去的页将会被开释,这就使得索引变得加倍松散。
DBCCINDEXDEFRAG也有几个弱点必要你注重:
假如一个表格中的两个索引共享一个盘区的统一个空间,而这两个索引其实不相邻,那末最好从头创建索引让它们相邻。
假如索引中的碎片太多,那末DBCCINDEXDEFRAG命令实行的速率大概要低于DBREINDEX命令;可是假如索引中的碎片不太多,那末DBCCINDEXDEFRAG应当比DBREINDEX快的多,用DBCCINDEXDEFRAG代替DBREINDEX的优点网上有先容。
非叶式(nonleaf)索引页不克不及从头排序。
DBCCINDEXDEFRAG不克不及更新统计数字。
如果WHERE子句的查询条件里使用比较操作符LIKE和REGEXP,MySQL只有在搜索模板的第一个字符不是通配符的情况下才能使用索引。比如说,如果查询条件是LIKEabc%‘,MySQL将使用索引;如果查询条件是LIKE%abc’,MySQL将不使用索引。 |
|