查询速度慢的原因很多,常见如下几种:
1、没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计的缺陷)
2、I/O吞吐量小,形成了瓶颈效应。
3、没有创建计算列导致查询不优化。
4、内存不足
5、网络速度慢
6、查询出的数据量过大(可以采用多次查询,其他的方法降低数据量)
7、锁或者死锁(这也是查询慢最常见的问题,是程序设计的缺陷)
8、sp_lock,sp_who,活动的用户查看,原因是读写竞争资源。
9、返回了不必要的行和列
10、查询语句不好,没有优化
可以通过如下方法来优化查询 :
1、把数据、日志、索引放到不同的I/O设备上,增加读取速度,以前可以将Tempdb应放在RAID0上,sql2000不在支持。数据量(尺寸)越大,提高I/O越重要.
2、纵向、横向分割表,减少表的尺寸(sp_spaceuse)
3、升级硬件
4、根据查询条件,建立索引,优化索引、优化访问方式,限制结果集的数据量。注意填充因子要适当(最好是使用默认值0)。索引应该尽量小,使用字节数小的列建索引好(参照索引的创建),不要对有限的几个值的字段建单一索引如性别字段
5、提高网速;
6、扩大服务器的内存,Windows 2000和SQL server 2000能支持4-8G的内存。配置虚拟内存:虚拟内存大小应基于计算机上并发运行的服务进行配置。运行 Microsoft SQL Server? 2000 时,可考虑将虚拟内存大小设置为计算机中安装的物理内存的 1.5 倍。如果另外安装了全文检索功能,并打算运行 Microsoft 搜索服务以便执行全文索引和查询,可考虑:将虚拟内存大小配置为至少是计算机中安装的物理内存的 3 倍。将 SQL Server max server memory 服务器配置选项配置为物理内存的 1.5 倍(虚拟内存大小设置的一半)。
7、增加服务器CPU个数;但是必须明白并行处理串行处理更需要资源例如内存。使用并行还是串行程是MsSQL自动评估选择的。单个任务分解成多个任务,就可以在处理器上运行。例如耽搁查询的排序、连接、扫描和GROUP BY字句同时执行,SQL SERVER根据系统的负载情况决定最优的并行等级,复杂的需要消耗大量的CPU的查询最适合并行处理。但是更新操作UPDATE,INSERT,DELETE还不能并行处理。
8、如果是使用like进行查询的话,简单的使用index是不行的,但是全文索引,耗空间。 like 'a%' 使用索引 like '%a' 不使用索引用 like '%a%' 查询时,查询耗时和字段值总长度成正比,所以不能用CHAR类型,而是VARCHAR。对于字段的值很长的建全文索引。
9、DB Server 和APPLication Server 分离;OLTP和OLAP分离
10、分布式分区视图可用于实现数据库服务器联合体。联合体是一组分开管理的服务器,但它们相互协作分担系统的处理负荷。这种通过分区数据形成数据库服务器联合体的机制能够扩大一组服务器,以支持大型的多层 Web 站点的处理需要。有关更多信息,参见设计联合数据库服务器。(参照SQL帮助文件'分区视图')
a、在实现分区视图之前,必须先水平分区表
b、在创建成员表后,在每个成员服务器上定义一个分布式分区视图,并且每个视图具有相同的名称。这样,引用分布式分区视图名的查询可以在任何一个成员服务器上运行。系统操作如同每个成员服务器上都有一个原始表的复本一样,但其实每个服务器上只有一个成员表和一个分布式分区视图。数据的位置对应用程序是透明的。
11、重建索引 DBCC REINDEX ,DBCC INDEXDEFRAG,收缩数据和日志 DBCC SHRINKDB,DBCC SHRINKFILE. 设置自动收缩日志.对于大的数据库不要设置数据库自动增长,它会降低服务器的性能。 在T-sql的写法上有很大的讲究,下面列出常见的要点:首先,DBMS处理查询计划的过程是这样的:
1、 查询语句的词法、语法检查
2、 将语句提交给DBMS的查询优化器
3、 优化器做代数优化和存取路径的优化
4、 由预编译模块生成查询规划
5、 然后在合适的时间提交给系统处理执行
6、 最后将执行结果返回给用户其次,看一下SQL SERVER的数据存放的结构:一个页面的大小为8K(8060)字节,8个页面为一个盘区,按照B树存放。
12、Commit和rollback的区别 Rollback:回滚所有的事物。 Commit:提交当前的事物. 没有必要在动态SQL里写事物,如果要写请写在外面如: begin tran exec(@s) commit trans 或者将动态SQL 写成函数或者存储过程。
13、在查询Select语句中用Where字句限制返回的行数,避免表扫描,如果返回不必要的数据,浪费了服务器的I/O资源,加重了网络的负担降低性能。如果表很大,在表扫描的期间将表锁住,禁止其他的联接访问表,后果严重。
14、SQL的注释申明对执行没有任何影响
15、尽可能不使用光标,它占用大量的资源。如果需要row-by-row地执行,尽量采用非光标技术,如:在客户端循环,用临时表,Table变量,用子查询,用Case语句等等。游标可以按照它所支持的提取选项进行分类: 只进 必须按照从第一行到最后一行的顺序提取行。FETCH NEXT 是唯一允许的提取操作,也是默认方式。可滚动性 可以在游标中任何地方随机提取任意行。游标的技术在SQL2000下变得功能很强大,他的目的是支持循环。有四个并发选项 READ_ONLY:不允许通过游标定位更新(Update),且在组成结果集的行中没有锁。 OPTIMISTIC WITH valueS:乐观并发控制是事务控制理论的一个标准部分。乐观并发控制用于这样的情形,即在打开游标及更新行的间隔中,只有很小的机会让第二个用户更新某一行。当某个游标以此选项打开时,没有锁控制其中的行,这将有助于最大化其处理能力。如果用户试图修改某一行,则此行的当前值会与最后一次提取此行时获取的值进行比较。如果任何值发生改变,则服务器就会知道其他人已更新了此行,并会返回一个错误。如果值是一样的,服务器就执行修改。 选择这个并发选项�OPTIMISTIC WITH ROW VERSIONING:此乐观并发控制选项基于行版本控制。使用行版本控制,其中的表必须具有某种版本标识符,服务器可用它来确定该行在读入游标后是否有所更改。在 SQL Server 中,这个性能由 timestamp 数据类型提供,它是一个二进制数字,表示数据库中更改的相对顺序。每个数据库都有一个全局当前时间戳值:@@DBTS。每次以任何方式更改带有 timestamp 列的行时,SQL Server 先在时间戳列中存储当前的 @@DBTS 值,然后增加 @@DBTS 的值。如果某 个表具有 timestamp 列,则时间戳会被记到行级。服务器就可以比较某行的当前时间戳值和上次提取时所存储的时间戳值,从而确定该行是否已更新。服务器不必比较所有列的值,只需比较 timestamp 列即可。如果应用程序对没有 timestamp 列的表要求基于行版本控制的乐观并发,则游标默认为基于数值的乐观并发控制。 SCROLL LOCKS 这个选项实现悲观并发控制。在悲观并发控制中,在把数据库的行读入游标结果集时,应用程序将试图锁定数据库行。在使用服务器游标时,将行读入游标时会在其上放置一个更新锁。如果在事务内打开游标,则该事务更新锁将一直保持到事务被提交或回滚;当提取下一行时,将除去游标锁。如果在事务外打开游标,则提取下一行时,锁就被丢弃。因此,每当用户需要完全的悲观并发控制时,游标都应在事务内打开。更新锁将阻止任何其它任务获取更新锁或排它锁,从而阻止其它任务更新该行。然而,更新锁并不阻止共享锁,所以它不会阻止其它任务读取行,除非第二个任务也在要求带更新锁的读取。滚动锁根据在游标定义的 SELECT 语句中指定的锁提示,这些游标并发选项可以生成滚动锁。滚动锁在提取时在每行上获取,并保持到下次提取或者游标关闭,以先发生者为准。下次提取时,服务器为新提取中的行获取滚动锁,并释放上次提取中行的滚动锁。滚动锁独立于事务锁,并可以保持到一个提交或回滚操作之后。如果提交时关闭游标的选项为关,则 COMMIT 语句并不关闭任何打开的游标,而且滚动锁被保留到提交之后,以维护对所提取数据的隔离。所获取滚动锁的类型取决于游标并发选项和游标 SELECT 语句中的锁提示。锁提示 只读 乐观数值 乐观行版本控制 锁定无提示 未锁定 未锁定 未锁定 更新 NOLOCK 未锁定 未锁定 未锁定 未锁定 HOLDLOCK 共享 共享 共享 更新 UPDLOCK 错误 更新 更新 更新 TABLOCKX 错误 未锁定 未锁定 更新其它 未锁定 未锁定 未锁定 更新 *指定 NOLOCK 提示将使指定了该提示的表在游标内是只读的。
16、用Profiler来跟踪查询,得到查询所需的时间,找出SQL的问题所在;用索引优化器优化索引
17、注意UNion和UNion all 的区别。UNION all好
18、注意使用DISTINCT,在没有必要时不要用,它同UNION一样会使查询变慢。重复的记录在查询里是没有问题的
19、查询时不要返回不需要的行、列
20、用sp_configure 'query governor cost limit'或者SET QUERY_GOVERNOR_COST_LIMIT来限制查询消耗的资源。当评估查询消耗的资源超出限制时,服务器自动取消查询,在查询之前就扼杀掉。SET LOCKTIME设置锁的时间
21、用select top 100 / 10 Percent 来限制用户返回的行数或者SET ROWCOUNT来限制操作的行
22、在SQL2000以前,一般不要用如下的字句: "IS NULL", "<>", "!=", "!>", "!<", "NOT", "NOT EXISTS", "NOT IN", "NOT LIKE", and "LIKE '%500'",因为他们不走索引全是表扫描。也不要在WHere字句中的列名加函数,如Convert,substring等,如果必须用函数的时候,创建计算列再创建索引来替代.还可以变通写法:WHERE SUBSTRING(firstname,1,1) = 'm'改为WHERE firstname like 'm%'(索引扫描),一定要将函数和列名分开。并且索引不能建得太多和太大。NOT IN会多次扫描表,使用EXISTS、NOT EXISTS ,IN , LEFT OUTER JOIN 来替代,特别是左连接,而Exists比IN更快,最慢的是NOT操作.如果列的值含有空,以前它的索引不起作用,现在2000的优化器能够处理了。相同的是IS NULL,"NOT", "NOT EXISTS", "NOT IN"能优化她,而"<>"等还是不能优化,用不到索引。
23、使用Query Analyzer,查看SQL语句的查询计划和评估分析是否是优化的SQL。一般的20%的代码占据了80%的资源,我们优化的重点是这些慢的地方。
24、如果使用了IN或者OR等时发现查询没有走索引,使用显示申明指定索引:
SELECT * FROM PersonMember (INDEX = IX_Title) WHERE processid IN ('男','女')
25、将需要查询的结果预先计算好放在表中,查询的时候再SELECT。这在SQL7.0以前是最重要的手段。例如医院的住院费计算。
26、MIN() 和 MAX()能使用到合适的索引。
27、数据库有一个原则是代码离数据越近越好,所以优先选择Default,依次为Rules,Triggers, Constraint(约束如外健主健CheckUNIQUE……,数据类型的最大长度等等都是约束),Procere.这样不仅维护工作小,编写程序质量高,并且执行的速度快。
28、如果要插入大的二进制值到Image列,使用存储过程,千万不要用内嵌INsert来插入(不知JAVA是否)。因为这样应用程序首先将二进制值转换成字符串(尺寸是它的两倍),服务器受到字符后又将他转换成二进制值.存储过程就没有这些动作: 方法:
Create procere p_insert as insert into table(Fimage) values (@image)
在前台调用这个存储过程传入二进制参数,这样处理速度明显改善。
29、Between在某些时候比IN速度更快,Between能够更快地根据索引找到范围。用查询优化器可见到差别。
select * from chineseresume where title in ('男','女')
Select * from chineseresume where title between '男' and '女'
是一样的。由于in会在比较多次,所以有时会慢些。
30、在必要是对全局或者局部临时表创建索引,有时能够提高速度,但不是一定会这样,因为索引也耗费大量的资源。他的创建同是实际表一样。
31、不要建没有作用的事物例如产生报表时,浪费资源。只有在必要使用事物时使用它。
32、用OR的字句可以分解成多个查询,并且通过UNION 连接多个查询。他们的速度只同是否使用索引有关,如果查询需要用到联合索引,用UNION all执行的效率更高.多个OR的字句没有用到索引,改写成UNION的形式再试图与索引匹配。一个关键的问题是否用到索引。
33、尽量少用视图,它的效率低。对视图操作比直接对表操作慢,可以用stored procere来代替她。特别的是不要用视图嵌套,嵌套视图增加了寻找原始资料的难度。我们看视图的本质:它是存放在服务器上的被优化好了的已经产生了查询规划的SQL。对单个表检索数据时,不要使用指向多个表的视图,直接从表检索或者仅仅包含这个表的视图上读,否则增加了不必要的开销,查询受到干扰.为了加快视图的查询,MsSQL增加了视图索引的功能。
34、没有必要时不要用DISTINCT和ORDER BY,这些动作可以改在客户端执行。它们增加了额外的开销。这同UNION 和UNION ALL一样的道理。
select top 20 ad.companyname,comid,position,ad.referenceid,worklocation,
convert(varchar(10),ad.postDate,120) as postDate1,workyear,degreedescription FROM
jobcn_query.dbo.COMPANYAD_query ad where referenceID in('JCNAD00329667','JCNAD132168','JCNAD00337748','JCNAD00338345',
'JCNAD00333138','JCNAD00303570','JCNAD00303569',
'JCNAD00303568','JCNAD00306698','JCNAD00231935','JCNAD00231933',
'JCNAD00254567','JCNAD00254585','JCNAD00254608',
'JCNAD00254607','JCNAD00258524','JCNAD00332133','JCNAD00268618',
'JCNAD00279196','JCNAD00268613') order by postdate desc
35、在IN后面值的列表中,将出现最频繁的值放在最前面,出现得最少的放在最后面,减少判断的次数。
36、当用SELECT INTO时,它会锁住系统表(sysobjects,sysindexes等等),阻塞其他的连接的存取。创建临时表时用显示申明语句,而不是
select INTO. drop table t_lxh begin tran select * into t_lxh from chineseresume
where name = 'XYZ' --commit
在另一个连接中SELECT * from sysobjects可以看到 SELECT INTO 会锁住系统表,Create table 也会锁系统表(不管是临时表还是系统表)。所以千万不要在事物内使用它!!!这样的话如果是经常要用的临时表请使用实表,或者临时表变量。
37、一般在GROUP BY 个HAVING字句之前就能剔除多余的行,所以尽量不要用它们来做剔除行的工作。他们的执行顺序应该如下最优:select 的Where字句选择所有合适的行,Group By用来分组个统计行,Having字句用来剔除多余的分组。这样Group By 个Having的开销小,查询快.对于大的数据行进行分组和Having十分消耗资源。如果Group BY的目的不包括计算,只是分组,那么用Distinct更快
38、一次更新多条记录比分多次更新每次一条快,就是说批处理好
39、少用临时表,尽量用结果集和Table类性的变量来代替它,Table 类型的变量比临时表好
40、在SQL2000下,计算字段是可以索引的,需要满足的条件如下:
a、计算字段的表达是确定的
b、不能用在TEXT,Ntext,Image数据类型
c、必须配制如下选项 ANSI_NULLS = ON, ANSI_PADDINGS = ON, …….
41、尽量将数据的处理工作放在服务器上,减少网络的开销,如使用存储过程。存储过程是编译好、优化过、并且被组织到一个执行规划里、且存储在数据库中的SQL语句,是控制流语言的集合,速度当然快。反复执行的动态SQL,可以使用临时存储过程,该过程(临时表)被放在Tempdb中。以前由于SQL SERVER对复杂的数学计算不支持,所以不得不将这个工作放在其他的层上而增加网络的开销。SQL2000支持UDFs,现在支持复杂的数学计算,函数的返回值不要太大,这样的开销很大。用户自定义函数象光标一样执行的消耗大量的资源,如果返回大的结果采用存储过程
42、不要在一句话里再三的使用相同的函数,浪费资源,将结果放在变量里再调用更快
43、SELECT COUNT(*)的效率教低,尽量变通他的写法,而EXISTS快.同时请注意区别: select count(Field of null) from Table 和 select count(Field of NOT null) from Table 的返回值是不同的!!!
44、当服务器的内存够多时,配制线程数量 = 最大连接数+5,这样能发挥最大的效率;否则使用 配制线程数量<最大连接数启用SQL SERVER的线程池来解决,如果还是数量 = 最大连接数+5,严重的损害服务器的性能。
45、按照一定的次序来访问你的表。如果你先锁住表A,再锁住表B,那么在所有的存储过程中都要按照这个顺序来锁定它们。如果你(不经意的)某个存储过程中先锁定表B,再锁定表A,这可能就会导致一个死锁。如果锁定顺序没有被预先详细的设计好,死锁很难被发现
46、通过SQL Server Performance Monitor监视相应硬件的负载 Memory: Page Faults / sec计数器如果该值偶尔走高,表明当时有线程竞争内存。如果持续很高,则内存可能是瓶颈。
Process:
1、% DPC Time 指在范例间隔期间处理器用在缓延程序调用(DPC)接收和提供服务的百分比。(DPC 正在运行的为比标准间隔优先权低的间隔)。 由于 DPC 是以特权模式执行的,DPC 时间的百分比为特权时间 百分比的一部分。这些时间单独计算并且不属于间隔计算总数的一部 分。这个总数显示了作为实例时间百分比的平均忙时。
2、%Processor Time计数器 如果该参数值持续超过95%,表明瓶颈是CPU。可以考虑增加一个处理器或换一个更快的处理器。
3、% Privileged Time 指非闲置处理器时间用于特权模式的百分比。(特权模式是为操作系统组件和操纵硬件驱动程序而设计的一种处理模式。它允许直接访问硬件和所有内存。另一种模式为用户模式,它是一种为应用程序、环境分系统和整数分系统设计的一种有限处理模式。操作系统将应用程序线程转换成特权模式以访问操作系统服务)。 特权时间的 % 包括为间断和 DPC 提供服务的时间。特权时间比率高可能是由于失败设备产生的大数量的间隔而引起的。这个计数器将平均忙时作为样本时间的一部分显示。
4、% User Time表示耗费CPU的数据库操作,如排序,执行aggregate functions等。如果该值很高,可考虑增加索引,尽量使用简单的表联接,水平分割大表格等方法来降低该值。 Physical Disk: Curretn Disk Queue Length计数器该值应不超过磁盘数的1.5~2倍。要提高性能,可增加磁盘。 SQLServer:Cache Hit Ratio计数器该值越高越好。如果持续低于80%,应考虑增加内存。 注意该参数值是从SQL Server启动后,就一直累加记数,所以运行经过一段时间后,该值将不能反映系统当前值。
47、分析select emp_name form employee where salary > 3000 在此语句中若salary是Float类型的,则优化器对其进行优化为Convert(float,3000),因为3000是个整数,我们应在编程时使用3000.0而不要等运行时让DBMS进行转化。同样字符和整型数据的转换。
48、查询的关联同写的顺序
select a.personMemberID, * from chineseresume a,personmember b where personMemberID
= b.referenceid and a.personMemberID = 'JCNPRH39681' (A = B ,B = '号码')
select a.personMemberID, * from chineseresume a,personmember b where a.personMemberID
= b.referenceid and a.personMemberID = 'JCNPRH39681' and b.referenceid = 'JCNPRH39681' (A = B ,B = '号码', A = '号码')
select a.personMemberID, * from chineseresume a,personmember b where b.referenceid
= 'JCNPRH39681' and a.personMemberID = 'JCNPRH39681' (B = '号码', A = '号码')
49、
(1)IF 没有输入负责人代码 THEN code1=0 code2=9999 ELSE code1=code2=负责人代码 END IF 执行SQL语句为: SELECT 负责人名 FROM P2000 WHERE 负责人代码>=:code1 AND负责人代码 <=:code2
(2)IF 没有输入负责人代码 THEN SELECT 负责人名 FROM P2000 ELSE code= 负责人代码 SELECT 负责人代码 FROM P2000 WHERE 负责人代码=:code END IF 第一种方法只用了一条SQL语句,第二种方法用了两条SQL语句。在没有输入负责人代码时,第二种方法显然比第一种方法执行效率高,因为它没有限制条件;在输入了负责人代码时,第二种方法仍然比第一种方法效率高,不仅是少了一个限制条件,还因相等运算是最快的查询运算。我们写程序不要怕麻烦
50、关于JOBCN现在查询分页的新方法(如下),用性能优化器分析性能的瓶颈,如果在I/O或者网络的速度上,如下的方法优化切实有效,如果在CPU或者内存上,用现在的方法更好。请区分如下的方法,说明索引越小越好。
begin
DECLARE @local_variable table (FID int identity(1,1),ReferenceID varchar(20))
insert into @local_variable (ReferenceID)
select top 100000 ReferenceID from chineseresume order by ReferenceID
select * from @local_variable where Fid > 40 and fid <= 60
end
和
begin
DECLARE @local_variable table (FID int identity(1,1),ReferenceID varchar(20))
insert into @local_variable (ReferenceID)
select top 100000 ReferenceID from chineseresume order by updatedate
select * from @local_variable where Fid > 40 and fid <= 60
end
的不同
begin
create table #temp (FID int identity(1,1),ReferenceID varchar(20))
insert into #temp (ReferenceID)
select top 100000 ReferenceID from chineseresume order by updatedate
select * from #temp where Fid > 40 and fid <= 60 drop table #temp
end
㈡ 自己在家能做传奇私服吗怎么做
您好,现在好玩的游戏好难找的现在,最受欢迎的还是传奇和仙侠手游,当然每个时期流行的游戏都不一样。毕竟手游很快红起来,又很快没人玩了,每个人的口味都不一样,选起来也方便,地址【点击官方链接领福利】 比较实用的还是网络旗下推荐给你这样一个手游排行榜,里面包含大榜单,新游期待榜热门手游榜,亲可以依据具体情况去选择,这里每天都更新,现在最多人玩的游戏一看就知道了,还有一个对应的,直接拿礼包,亲可以看看。 下班无聊玩玩还可以,可不要上瘾哦。友情提示:抵制不良游戏,拒绝盗版游戏。 注意自我保护,谨防受骗上当。 适度游戏益脑,沉迷游戏伤身。 合理安排时间,享受健康生活。适龄提示:适合18岁以上使用。
㈢ mssql大数据检索问题
我是来混分的
我的意见是
创建索引, 移除历史数据到备份表中
下面的内容来自别人总结的, 呵呵
1、1、调整数据结构的设计。这一部分在开发信息系统之前完成,程序员需要考虑是否使用ORACLE数据库的分区功能,对于经常访问的数据库表是否需要建立索引等。
2、2、调整应用程序结构设计。这一部分也是在开发信息系统之前完成,程序员在这一步需要考虑应用程序使用什么样的体系结构,是使用传统的Client/Server两层体系结构,还是使用Browser/Web/Database的三层体系结构。不同的应用程序体系结构要求的数据库资源是不同的。
3、3、调整数据库SQL语句。应用程序的执行最终将归结为数据库中的SQL语句执行,因此SQL语句的执行效率最终决定了ORACLE数据库的性能。ORACLE公司推荐使用ORACLE语句优化器(Oracle Optimizer)和行锁管理器(row-level manager)来调整优化SQL语句。
4、4、调整服务器内存分配。内存分配是在信息系统运行过程中优化配置的,数据库管理员可以根据数据库运行状况调整数据库系统全局区(SGA区)的数据缓冲区、日志缓冲区和共享池的大小;还可以调整程序全局区(PGA区)的大小。需要注意的是,SGA区不是越大越好,SGA区过大会占用操作系统使用的内存而引起虚拟内存的页面交换,这样反而会降低系统。
5、5、调整硬盘I/O,这一步是在信息系统开发之前完成的。数据库管理员可以将组成同一个表空间的数据文件放在不同的硬盘上,做到硬盘之间I/O负载均衡。
6、6、调整操作系统参数,例如:运行在UNIX操作系统上的ORACLE数据库,可以调整UNIX数据缓冲池的大小,每个进程所能使用的内存大小等参数。
实际上,上述数据库优化措施之间是相互联系的。ORACLE数据库性能恶化表现基本上都是用户响应时间比较长,需要用户长时间的等待。但性能恶化的原因却是多种多样的,有时是多个因素共同造成了性能恶化的结果,这就需要数据库管理员有比较全面的计算机知识,能够敏感地察觉到影响数据库性能的主要原因所在。另外,良好的数据库管理工具对于优化数据库性能也是很重要的。
ORACLE数据库性能优化工具
常用的数据库性能优化工具有:
1、1、ORACLE数据库在线数据字典,ORACLE在线数据字典能够反映出ORACLE动态运行情况,对于调整数据库性能是很有帮助的。
2、2、操作系统工具,例如UNIX操作系统的vmstat,iostat等命令可以查看到系统系统级内存和硬盘I/O的使用情况,这些工具对于管理员弄清出系统瓶颈出现在什么地方有时候很有用。
3、3、SQL语言跟踪工具(SQL TRACE FACILITY),SQL语言跟踪工具可以记录SQL语句的执行情况,管理员可以使用虚拟表来调整实例,使用SQL语句跟踪文件调整应用程序性能。SQL语言跟踪工具将结果输出成一个操作系统的文件,管理员可以使用TKPROF工具查看这些文件。
4、4、ORACLE Enterprise Manager(OEM),这是一个图形的用户管理界面,用户可以使用它方便地进行数据库管理而不必记住复杂的ORACLE数据库管理的命令。
5、5、EXPLAIN PLAN——SQL语言优化命令,使用这个命令可以帮助程序员写出高效的SQL语言。
ORACLE数据库的系统性能评估
信息系统的类型不同,需要关注的数据库参数也是不同的。数据库管理员需要根据自己的信息系统的类型着重考虑不同的数据库参数。
1、1、在线事务处理信息系统(OLTP),这种类型的信息系统一般需要有大量的Insert、Update操作,典型的系统包括民航机票发售系统、银行储蓄系统等。OLTP系统需要保证数据库的并发性、可靠性和最终用户的速度,这类系统使用的ORACLE数据库需要主要考虑下述参数:
l l 数据库回滚段是否足够?
l l 是否需要建立ORACLE数据库索引、聚集、散列?
l l 系统全局区(SGA)大小是否足够?
l l SQL语句是否高效?
2、2、数据仓库系统(Data Warehousing),这种信息系统的主要任务是从ORACLE的海量数据中进行查询,得到数据之间的某些规律。数据库管理员需要为这种类型的ORACLE数据库着重考虑下述参数:
l l 是否采用B*-索引或者bitmap索引?
l l 是否采用并行SQL查询以提高查询效率?
l l 是否采用PL/SQL函数编写存储过程?
l l 有必要的话,需要建立并行数据库提高数据库的查询效率
SQL语句的调整原则
SQL语言是一种灵活的语言,相同的功能可以使用不同的语句来实现,但是语句的执行效率是很不相同的。程序员可以使用EXPLAIN PLAN语句来比较各种实现方案,并选出最优的实现方案。总得来讲,程序员写SQL语句需要满足考虑如下规则:
1、1、尽量使用索引。试比较下面两条SQL语句:
语句A:SELECT dname, deptno FROM dept WHERE deptno NOT IN
(SELECT deptno FROM emp);
语句B:SELECT dname, deptno FROM dept WHERE NOT EXISTS
(SELECT deptno FROM emp WHERE dept.deptno = emp.deptno);
这两条查询语句实现的结果是相同的,但是执行语句A的时候,ORACLE会对整个emp表进行扫描,没有使用建立在emp表上的deptno索引,执行语句B的时候,由于在子查询中使用了联合查询,ORACLE只是对emp表进行的部分数据扫描,并利用了deptno列的索引,所以语句B的效率要比语句A的效率高一些。
2、2、选择联合查询的联合次序。考虑下面的例子:
SELECT stuff FROM taba a, tabb b, tabc c
WHERE a.acol between :alow and :ahigh
AND b.bcol between :blow and :bhigh
AND c.ccol between :clow and :chigh
AND a.key1 = b.key1
AMD a.key2 = c.key2;
这个SQL例子中,程序员首先需要选择要查询的主表,因为主表要进行整个表数据的扫描,所以主表应该数据量最小,所以例子中表A的acol列的范围应该比表B和表C相应列的范围小。
3、3、在子查询中慎重使用IN或者NOT IN语句,使用where (NOT) exists的效果要好的多。
4、4、慎重使用视图的联合查询,尤其是比较复杂的视图之间的联合查询。一般对视图的查询最好都分解为对数据表的直接查询效果要好一些。
5、5、可以在参数文件中设置SHARED_POOL_RESERVED_SIZE参数,这个参数在SGA共享池中保留一个连续的内存空间,连续的内存空间有益于存放大的SQL程序包。
6、6、ORACLE公司提供的DBMS_SHARED_POOL程序可以帮助程序员将某些经常使用的存储过程“钉”在SQL区中而不被换出内存,程序员对于经常使用并且占用内存很多的存储过程“钉”到内存中有利于提高最终用户的响应时间。
CPU参数的调整
CPU是服务器的一项重要资源,服务器良好的工作状态是在工作高峰时CPU的使用率在90%以上。如果空闲时间CPU使用率就在90%以上,说明服务器缺乏CPU资源,如果工作高峰时CPU使用率仍然很低,说明服务器CPU资源还比较富余。
使用操作相同命令可以看到CPU的使用情况,一般UNIX操作系统的服务器,可以使用sar –u命令查看CPU的使用率,NT操作系统的服务器,可以使用NT的性能管理器来查看CPU的使用率。
数据库管理员可以通过查看v$sysstat数据字典中“CPU used by this session”统计项得知ORACLE数据库使用的CPU时间,查看“OS User level CPU time”统计项得知操作系统用户态下的CPU时间,查看“OS System call CPU time”统计项得知操作系统系统态下的CPU时间,操作系统总的CPU时间就是用户态和系统态时间之和,如果ORACLE数据库使用的CPU时间占操作系统总的CPU时间90%以上,说明服务器CPU基本上被ORACLE数据库使用着,这是合理,反之,说明服务器CPU被其它程序占用过多,ORACLE数据库无法得到更多的CPU时间。
数据库管理员还可以通过查看v$sesstat数据字典来获得当前连接ORACLE数据库各个会话占用的CPU时间,从而得知什么会话耗用服务器CPU比较多。
出现CPU资源不足的情况是很多的:SQL语句的重解析、低效率的SQL语句、锁冲突都会引起CPU资源不足。
1、数据库管理员可以执行下述语句来查看SQL语句的解析情况:
SELECT * FROM V$SYSSTAT
WHERE NAME IN
('parse time cpu', 'parse time elapsed', 'parse count (hard)');
这里parse time cpu是系统服务时间,parse time elapsed是响应时间,用户等待时间
waite time = parse time elapsed – parse time cpu
由此可以得到用户SQL语句平均解析等待时间=waite time / parse count。这个平均等待时间应该接近于0,如果平均解析等待时间过长,数据库管理员可以通过下述语句
SELECT SQL_TEXT, PARSE_CALLS, EXECUTIONS FROM V$SQLAREA
ORDER BY PARSE_CALLS;
来发现是什么SQL语句解析效率比较低。程序员可以优化这些语句,或者增加ORACLE参数SESSION_CACHED_CURSORS的值。
2、数据库管理员还可以通过下述语句:
SELECT BUFFER_GETS, EXECUTIONS, SQL_TEXT FROM V$SQLAREA;
查看低效率的SQL语句,优化这些语句也有助于提高CPU的利用率。
3、3、数据库管理员可以通过v$system_event数据字典中的“latch free”统计项查看ORACLE数据库的冲突情况,如果没有冲突的话,latch free查询出来没有结果。如果冲突太大的话,数据库管理员可以降低spin_count参数值,来消除高的CPU使用率。
内存参数的调整
内存参数的调整主要是指ORACLE数据库的系统全局区(SGA)的调整。SGA主要由三部分构成:共享池、数据缓冲区、日志缓冲区。
1、 1、 共享池由两部分构成:共享SQL区和数据字典缓冲区,共享SQL区是存放用户SQL命令的区域,数据字典缓冲区存放数据库运行的动态信息。数据库管理员通过执行下述语句:
select (sum(pins - reloads)) / sum(pins) "Lib Cache" from v$librarycache;
来查看共享SQL区的使用率。这个使用率应该在90%以上,否则需要增加共享池的大小。数据库管理员还可以执行下述语句:
select (sum(gets - getmisses - usage - fixed)) / sum(gets) "Row Cache" from v$rowcache;
查看数据字典缓冲区的使用率,这个使用率也应该在90%以上,否则需要增加共享池的大小。
2、 2、 数据缓冲区。数据库管理员可以通过下述语句:
SELECT name, value FROM v$sysstat WHERE name IN ('db block gets', 'consistent gets','physical reads');
来查看数据库数据缓冲区的使用情况。查询出来的结果可以计算出来数据缓冲区的使用命中率=1 - ( physical reads / (db block gets + consistent gets) )。
这个命中率应该在90%以上,否则需要增加数据缓冲区的大小。
3、 3、 日志缓冲区。数据库管理员可以通过执行下述语句:
select name,value from v$sysstat where name in ('redo entries','redo log space requests');查看日志缓冲区的使用情况。查询出的结果可以计算出日志缓冲区的申请失败率:
申请失败率=requests/entries,申请失败率应该接近于0,否则说明日志缓冲区开设太小,需要增加ORACLE数据库的日志缓冲区。
㈣ 英国地调局地质调查资料数据服务概况
赵小平
(中国地质调查局发展研究中心,北京100037)
摘要 本文从服务产品、服务方式、价格机制及版权政策等方面概要介绍了英国地调局的地质资料数据服务现状。
关键词 地质资料;服务产品;服务方式;版权政策
英国地调局(BGS)成立于1835年,是世界上成立最早的国家级地质调查机构,也是英国最主要的地学信息中心。作为一个公共服务部门,英国地调局的主要职责是向英国各级政府部门提供全方位的地学建议,并向企业、学术团体和公众提供公正的地学建议。近年来,由于社会环境的巨大变化,英国地调局的目标使命也发生了相应的变化,越来越重视地学信息的社会化服务和地学信息技术的开发利用,并在服务范围和服务方式上进行了较大的调整,将自己定位为一个知识型科学服务提供者和一个着眼于用户的战略性地学组织。本文将从服务产品、服务方式、价格机制及版权政策等多个方面对英国地调局的地质调查资料服务进行全方位的介绍。
1 服务产品丰富多样,种类繁多
作为世界上历史最悠久的调查局,英国地调局的地质调查工作区域不仅涵盖英国本土,还包括英联邦各成员国以及其他国家,工作成果相当丰富,提供的地学产品种类繁多。根据产品的性质,主要划分为:①地质图。包括各种比例尺的地质图,这些地学图件大部分以打印形式提供,小部分为影印版,可以按需生产。部分地学图件提供了索引地图,用户可根据索引地图搜索和提取相关信息。②地质书籍和地质指南。包括地质研究报告、特殊区域地质指南、特殊地区图册等。③地球化学、地球物理和水文地质数据产品。主要包括各类地球化学图册、地球物理图册、地下水脆弱性图册、水文地质图以及水文地质报告。④矿产方面的出版物。即大量与英国矿产资源相关的出版物,内容涉及矿产评估报告、矿产勘查报告、重要矿产评估报告、地方和区域资源评价报告、矿产品开采统计数据等。⑤教育和休闲产品。即一些科普读物,主要受众是那些业余地质爱好者和学生。
特别值得关注的是英国地调局地学数据中心拥有大量的数字数据产品,这些产品主要分为数字地学图件和数字数据。数字地学图件:英国地调局利用地理信息系统(GIS)生成了大量标准的数字地学图件,其中数字地学图件有陆地地质图、近海地质图、地球化学图、地球物理图和1:25万海洋测深图,矿产资源图和水文地质图即将以数字形式提供利用。数字地学图件分为光栅图像和矢量数据,并具有多种格式和结构,如 ArcView和Mapinfo或其他格式,具体视主题而定,其价格根据图层区域、不同专题和不同比例尺而变化。数字地学数据:英国地调局拥有大量数字地学数据,数据涵盖地球化学、地球物理、地质灾害、水文地质、填图、矿产资源等多个领域。这些数据均可通过英国地调局的地学数据索引系统GDI(Geoscience Data Index)进行查询,但所有数据均须签订版权协议之后才能使用。英国地调局还拥有庞大的元数据查询库,通过该数据库,用户可以查询以下类别的元数据:钻孔、工程地质、坑探工程、常用地质术语、地球化学、地质年代学、地质图、地质论文集、地质过程模拟、地质分区、地球物理、水文地质、陆地调查、岩相学、海洋地质、矿产、古生物、石油地质、岩石学、区域地质、遥感、采样、沉积地质、地震地质、基岩地质、标本采集、地层学和构造地质等。
2 地质资料数据的网络服务先进、完善
英国的地质调查成果信息化程度较高,已经建立了数十个相关地学数据库,并大力开发基于网络环境的数据服务平台。从世界范围来看,英国地调局的地质调查资料数据在线服务开展得相对较早,并且在世界上率先采用了地质资料数据一站式服务模式,即用户只需登录英国地调局的网上商店,便可检索并订购英国地调局提供的各项数据服务,获得自己所需的地质资料数据。这种服务模式使得用户在指定地点同时完成以往需要在多个地点多次完成的任务,使用户的操作更加方便快捷,大大提高了资料数据的服务效率。
英国网上商店的功能全面,用户可以浏览了解英国地调局所有的分类成果信息与相应价格,通过网上填写订单与直接填写信用卡两种方式进行购买。例如,用户选定一个区域,希望了解该地区基础地质情况,或者放射性岩石分布情况,在网上提交需求并付费,英国地调局的在线服务系统就会自动搜索网上的数据库,按照标准报告格式,自动抽取相应文字资料、数据、图件,形成一个电子报告,并发送给用户。网上商店主页设置的功能模块主要有产品目录、检索、简讯、购物筐、立即购买和联系方式等。产品目录模块主要罗列了教育和休闲产品、地质图、地质类书籍和指南、地球化学地球物理及水文地质学、矿产类出版物、国外地学出版物和技术类出版物、图件索引7个产品类别,点击这些产品类别用户可以获得相关产品的简要介绍和产品目录。在检索功能模块中,用户可以在检索栏中输入检索信息直接进行检索,也可以点击“按类别检索”、“按产品检索”和“按图形检索”3个辅助功能键进行检索。简讯模块主要用于发布最新的产品信息,帮助用户了解英国地调局新近有哪些产品开始提供利用服务。相关链接栏目则用于网上商店的相关信息链接,如“目录下载”、“如何使用网上商店”、“产品使用条件和条款”等。
3 服务方式灵活,产品价格明确
3.1 服务方式灵活
作为一个以市场经济为主的发达国家,英国地调局的数据资料产品服务方式多样,手段灵活。英国地调局在诺丁汉、爱丁堡、伦敦等地设置了多个产品直销点,主要产品有地质图、地球物理图、地球化学及环境灾害方面的图件、地学科普读物、岩石矿物标本以及二次加工的人文装饰用品、数字产品光盘;还出售英国军测局出版的不同比例尺的地形图等。这些直销点同时接受邮件订购服务和数据产品加工服务。英国地调局的地学数据资料除该局的直销点之外,也可由许多从事专门服务的机构网站,如房地产商(涉及开发地段的地质、环境、地下水等与地质有关的信息)进行分销,英国地调局向分销商返回一定比例的销售收入(如对房地产商为20%左右)。
随着网络的兴起和繁荣,英国地调局在地学数据资料网络服务方面也投入了大量的精力和资金,并紧跟电子商务潮的流行,与英国电子商务委员会合作设立了专门的网上商店,增加了电子商务专栏。用户可以直接通过网络查看并了解英国地调局所有的分类成果信息与相应价格,并通过网络购买所需地学资料。
3.2 产品价格明确
英国地调局地学数据资料的网上价格(含税、工本费、运费),主要由数据信息中心与客户服务部联合根据市场客户需求制定(政府不干预,但需要依法纳税),并根据时间与地区的不同,对产品价格进行不断的调整。所有产品都明码标价,用户可以在网上免费下载产品目录和相应的价格信息。英国地调局产品的国内邮费随产品定价的多少而不同,少于4.99英镑的免费,5~9.99英镑、10~19.99英镑、20~29.99英镑、30~49.99英镑、50~99.99英镑以及高于100英镑的产品邮费分别为:1.25英镑、1.95英镑、2.95英镑、3.95英镑、5.50英镑和7.50英镑。对于国外用户来说,邮费可能更高。英国地调局的部分产品还需另交增值税,这在产品目录中有说明,但出口产品不交增值税。
英国地调局的地学数据产品价格相当明确,但并非一成不变,会根据具体使用条件(如使用年限和许可人数)而进行相应的调整。下面就以数字地学图件为例进行说明。
英国地调局数字地学图件针对用户收取的费用称为许可费。许可费中包括数据制作费(Data Prep-aration Charge,DPC)、数据使用费(Data Usage Charge,DUC)和许可证管理费(Licence Administra-tion Charge,LAC)。第一年的许可费包括数据制作费、数据使用费和许可证管理费。继续使用费用则包括数据使用费和许可证管理费。需要注意的是,许可费中包括的数据制作费是指标准的数据制作费。如果客户对GIS数据的结构、设计和数量有特殊要求,则需另行交纳数据制作费,此数据制作费不同于作为数字许可费组成部分的那部分数据制作费。
表1 英国地调局数字地学图件不同使用年限许可费表
表2 英国地调局的多用户许可协议费阶梯许可费表
英国地调局现行的产品许可费制度鼓励用户一次性购买较长使用年限的产品,也就是说,所购买产品的使用年限越长,就越节约成本(表1)。例如,要一次性获取为期5年的许可,所需支付的费用为:5×DUC+DPC+LAC。如果打算按年度续约,则5年期许可所需支付的费用公式如下:第一年至第五年的费用分别为DUC+DPC+LAC,DUC+LAC,DUC+LAC,DUC+LAC,DUC+LAC,这样,产品的5年使用许可费=5×DUC+DPC+5×LAC。按年度续约要比一次性签约多交4倍的许可证管理费。
另外,该许可费制度还鼓励用户购买多用户数据许可协议,即许可用户数越多,价格越优惠。表2是英国地调局的多用户许可协议费阶梯许可费表。
4 版权、版税及保密问题
4.1 版权
英国地调局作品版权的依据是1988年《版权设计和专利法》和《数字数据供给条件(2003~2004年)》的规定。英国地调局作品的版权属于自然环境研究委员会(NERC),英国地调局知识产权管理处被授权代表自然环境研究委员会颁发这种许可证。为了不使版权受到侵犯,凡与作品版权有关事宜须经版权所有者的许可。在一般情况下,须持有特定的版权许可证,而且须交纳适当的年费才可复制英国调查局的作品。持年(许可)证的受证人有权按规定摘录英国地调局的图件和其他文件转给第三者,但这种许可证的受证人无权将英国地调局的作品当成受证人自己的作品,也无权以这种假象发表作品。
英国地调局的版权许可证不包括任何数字作品的复制和使用权,为此须得到专门许可。它也不包括英国地调局作品的其他推广使用权,任何推广使用都须得到单独同意。使用英国地调局的摄影作品也要得到单独许可。英国地调局颁发的数字作品一律须凭单独的英国地调局颁发的数字作品许可证才能引用。每个许可证只能根据为受证人指定的几项用途(或只根据许可证为受证人所在的单位、承包人或转包人指定的几项用途)使用数据集。对于已按预定的用途只使用了部分数字数据,后来未使用其余部分的数字数据的许可证,不退许可证费。
4.2 版税
如果所使用的数据经过处理或得到增值,从而提供了供咨询合同用的产品或可公开出售的商品(不论以模拟形式还是数字形式),要向BGS交纳版税。版税根据产品(商品)性质和发行的拷贝数量交纳。如果将BGS的作品合到商业计算机信息系统,也要交纳版税。版税数额和交纳频率要根据约定的条款和合同条例确定。BGS知识产权管理处应提前规定版税的性质和版税的数额,保证预期的产品(服务)不影响BGS自己使用作品。BGS保留免费征收公开销售的增值产品的拷贝交给地质资料馆的权利。
4.3 保密制度
以英国地调局的图件为例,其版权所有者既包括英国地调局,也包括军械部。英国地调局的大多数地质图使用军械部的地形数据,后者属“顶级版权”(Crown Copyright),英国地调局承认其地质图和其他出版物的“顶级版权”(及其他版权所有人)。军械部的作品只能经军械部颁发给许多用户的许可证才可复制。因没有军械部许可证而无法复制其地形数据的用户,必须与军械部进行交涉。仅凭军械部许可证无权复制英国地调局的图件;同样,仅凭英国地调局许可证也无权复制受“顶级版权”保护的作品。
㈤ win10蓝屏attempted_switch_form_dpc
“ATTEMPTED_SWITCH_FROM_DPC”也被称为“STOP 0x100000B8”或指南未遂开关从死亡错误DPC蓝屏 。Windows的一些用户报告这个蓝屏错误,这通常是系统的初始化过程中出现在屏幕上:
ATTEMPTED切换自DPC
在许多情况下,这种蓝屏错误可能是由设备驱动程序,硬件或一个相关的软件引起的,并自动执行电脑突然关机,以防止数据丢失。最近添加的硬件或更新的设备驱动程序,如视频驱动程序,此错误的通常原因。这个蓝屏错误的其他可能的原因是内存存在故障和防病毒/反间谍软件。
为了解决这个“试图把从DPC”蓝屏错误,必须检查计算机是否最近安装的硬件,设备驱动程序,或其他相关软件。通过下载和安装设备驱动程序和更新分别从Windows Update替换损坏或过时的设备驱动程序。要进行手动更新,打开IE浏览器,点击安全,然后选择Windows Update并按照提示和说明。
也可以使用系统还原功能来解决这个蓝屏错误。要执行此操作,请单击开始按钮,在对话框中键入系统还原,然后按Enter键。点击系统,当它出现在搜索结果中恢复,并按照说明来安装推荐的还原点。如果您希望将系统恢复到一个明确的日期和时间,选择可供选择的恢复实用程序窗口不同的还原点的选项,单击下一步,然后按照提供的说明操作。
㈥ 什么是DPC
所有测试可以帮助医生正确地诊断和管理甲状腺紊乱、糖尿病、心肌功能障碍、贫血、过敏、性激素功能紊乱、心脏病、传染病、滥用药物及肿瘤。
DPC的研究机构在诺贝尔奖得主Dr. James Watson的领导下,不断开发和研制出大量世界一流品质的诊断产品,特别是1993年面世的全自动化学发光免疫分析系统(IMMULITE),以其卓越的性能和繁多的试剂盒种类风靡世界,而1998年面世的2000型全自动化学发光免疫分析仪系统(IMMULITE2000)更代表了全球非同位素免疫分析的最高水平回答:2005-08-05 11:28
㈦ 如何处理蓝屏出错 DPC WATCHDOG VIOLATION
处理方法:
1.清理灰尘,检查内存条、硬盘等是否插牢;或者把内存互换插槽;
2.如果Windows 2000/XP可以启动,请检查“事件查看器”中的信息,以确定导致故障的设备或驱动程序。启动“事件查看器”的方法是:“开始”\“设置”\“控制面板”\“管理工具”\“事件查看器”\“系统日志”。
3.如果不能启动计算机,试着用“安全模式”或“最后一次正确的配置”启动计算机,然后删除或禁用新安装的附加程序或驱动程序。如果用“安全模式”启动不了计算机,可使用修复控制台。修复控制台可以禁用一些服务、重新命名设备驱动程序、检修引导扇区或主引导记录。
4.拆下新安装的硬件设备(RAM、适配卡、硬盘、等等)。
5.确保已经更新了硬件设备的驱动程序,以及系统有最新的BIOS。
6.运行由计算机制造商提供的系统诊断工具,尤其是内存检查。
7.检查Microsoft兼容硬件列表(HCL),确保所有的硬件和驱动程序都与Windows2000/XP兼容。Hcl.txt在Windows 2000/XP CD-ROM的\Support文件夹中。
8.在BIOS中禁用内存缓存功能。
9.重新启动计算机,在启动屏幕处,按F8进入“高级启动选项”,然后选择“最后一次正确的配置”。(注:使用“最后一次正确的配置”的方式启动计算机,计算机的所有设置被重置为最后一次成功启动时的配置。)
10.电脑中毒,使用如腾讯电脑管家等专业杀毒软件进行全盘杀毒,并把隔离区的文件删除,重启电脑。
㈧ 苹果手机foobar2000使用方法
本人电脑win10系统,foobar版本为1.4.1
实话说在前,win10的卡顿不算太多,但我有强迫症。。。
还有,我有听歌时用电脑做其他事的习惯,此种做法会导致出现一定的卡顿,才研究的这些方法,就由此贴分享给大家,此贴仅供参考,希望在你foobar2000卡顿时能够参照此贴找到一个改善思路,请大家阅读此贴子时注意我对应的说明,都是我自己在实际使用过程当中总结出来的,由于本人水平有限,可能解释的不是特别准确到位。
第一类方法:调节foobar2000自身的设置
1.缓冲长度选项
在foobar的 参数选项-播放-输出 界面上有个缓冲长度的选项
界面如图所示,单位为毫秒ms,当foobar卡顿时,可以通过适当拉高缓冲长度来提升流畅度,此项的作用是写入内存的缓冲时长,故拉高可在一定程度上解决卡顿,个人推荐500——1000ms。
但请注意:
这个缓冲长度会影响听感,短缓冲下,声音分辨率较高,但比较干燥,齿音较多,极端情况下,超出了声卡的能力范围,甚至会出现爆音和短暂的停顿;高缓冲下,声音j较润,细节减少,但耐听.极端情况下,超出声卡缓存,会报错。
2.全文件缓冲选项
在foobar的 参数选项-高级-播放 界面上有一个全文件缓冲的选项
界面如图所示,这个选项的作用是设置播放时把源文件全部读入内存的最大文件大小。我设置的是1048600kb,也就是略大于1G(即为1048576kb)
请注意:在测试过程中发现foobar最大支持1G的全文件缓冲,在设置上写16G都没用,它最大还是缓存1G文件(一般的无损文件很少超过1G),还试了试给foobar申请大内存,然并卵,最大就缓存1G。
个人认为:全文件缓冲解决问题的概率较高,内存的读写速度远高于硬盘,哪怕是SSD,CPU直接从内存中读取文件,而不再是从硬盘一点点提取到内存,再由CPU读取,减少了中间过程,卡顿产生的几率也就更小。如果你的电脑配置够好,推荐使用第二种方法,例如我电脑是16G内存,分1G听歌用总不过分吧(还不一定用满),配置实在不行就用第一个方法,但影响听感。
第二类方法:提升foobar的优先级,并使其CPU亲和力避开CPU0
实际使用中,如果你打开任务管理器会发现:CPU0的占用率明显高于CPU1234567......
也就是传说中的“一核有难,n核围观”
究其原因,CPU0作为第一逻辑核心,什么任务都会优先找上他,windows系统自带的DPC(延迟过程调用),DPC会导致高优先级进程打断低优先级进程,一旦来了优先级更高的任务,那么foobar的任务就被搁置了,也就卡了一下。
解决此问题的方法就是使用软件 process lasso 调整
第一,调高优先级
第二,调整CPU亲和力(注:一定要避开CPU0)
第三,调整I/O优先级
第四,调整内存优先级
注:一定要在总是里更改
解释一下我们这么做的目的
foobar本来也不太吃资源,还总被打断,我们提升它这几个方面:
1.优先级:即进程优先级,设为高,防止被打断
2.CPU亲和力:选择使用率较低的CPU核心上运行foobar的进程
3.I/O优先级:即该进程的调用硬盘资源的优先级,设为高
4.内存优先级:进程调用内存的优先级
用个通俗的解释就是:让工人优先干foobar的小活,找比较闲的工人去干,仓库的钥匙给工人们,流水线也允许优先使用,这样达到了从系统层面上优化foobar。
而DPC是底层系统的运行机制,相当于宪法,很难很难很难更改!!!
㈨ 阿里云的主要产品
阿里云的产品致力于提升运维效率,降低IT成本,令使用者更专注于核心业务发展。
云服务器ECS
一种简单高效,处理能力可弹性伸缩的计算服务。助您快速构建更稳定、安全的应用。提升运维效率,降低IT成本,使您更专注于核心业务创新。
云引擎ACE
一种弹性、分布式的应用托管环境,支持Java、PHP、Python、Node.js等多种语言环境。帮助开发者快速开发和部署服务端应用程序,并简化系统维护工作。搭载了丰富的分布式扩展服务,为应用程序提供强大助力。
弹性伸缩
根据用户的业务需求和策略,自动调整其弹性计算资源的管理服务。其能够在业务增长时自动增加ECS实例,并在业务下降时自动减少ECS实例。
一种即开即用、稳定可靠、可弹性伸缩的在线数据库服务。基于飞天分布式系统和高性能存储,RDS支持MySQL、SQL Server、PostgreSQL和PPAS(高度兼容Oracle)引擎,并且提供了容灾、备份、恢复、监控、迁移等方面的全套解决方案。
开放结构化数据服务OTS
构建在阿里云飞天分布式系统之上的 NoSQL数据库服务,提供海量结构化数据的存储和实时访问。OTS 以实例和表的形式组织数据,通过数据分片和负载均衡技术,实现规模上的无缝扩展。应用通过调用 OTS API / SDK 或者操作管理控制台来使用 OTS 服务。
开放缓存服务OCS
在线缓存服务,为热点数据的访问提供高速响应。
键值存储KVStore for Redis
兼容开源Redis协议的Key-Value类型在线存储服务。KVStore支持字符串、链表、集合、有序集合、哈希表等多种数据类型,及事务(Transactions)、消息订阅与发布(Pub/Sub)等高级功能。通过内存+硬盘的存储方式,KVStore在提供高速数据读写能力的同时满足数据持久化需求。
数据传输
支持以数据库为核心的结构化存储产品之间的数据传输。 它是一种集数据迁移、数据订阅及数据实时同步于一体的数据传输服务。 数据传输的底层数据流基础设施为阿里双11异地双活基础架构, 为数千下游应用提供实时数据流,已在线上稳定运行3年之久。
对象存储OSS
阿里云对外提供的海量、安全和高可靠的云存储服务。RESTFul API的平台无关性,容量和处理能力的弹性扩展,按实际容量付费真正使您专注于核心业务。
归档存储
作为阿里云数据存储产品体系的重要组成部分,致力于提供低成本、高可靠的数据归档服务,适合于海量数据的长期归档、备份。
消息服务
一种高效、可靠、安全、便捷、可弹性扩展的分布式消息与通知服务。消息服务能够帮助应用开发者在他们应用的分布式组件上自由的传递数据,构建松耦合系统。
CDN
内容分发网络将源站内容分发至全国所有的节点,缩短用户查看对象的延迟,提高用户访问网站的响应速度与网站的可用性,解决网络带宽小、用户访问量大、网点分布不均等问题。 负载均衡
对多台云服务器进行流量分发的负载均衡服务。负载均衡可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。
专有网络VPC
帮助基于阿里云构建出一个隔离的网络环境。可以完全掌控自己的虚拟网络,包括选择自有 IP 地址范围、划分网段、配置路由表和网关等。也可以通过专线/VPN等连接方式将VPC与传统数据中心组成一个按需定制的网络环境,实现应用的平滑迁移上云。
开放数据处理服务ODPS
由阿里云自主研发,提供针对TB/PB级数据、实时性要求不高的分布式处理能力,应用于数据分析、挖掘、商业智能等领域。阿里巴巴的离线数据业务都运行在ODPS上。
采云间DPC
基于开放数据处理服务(ODPS)的DW/BI的工具解决方案。DPC提供全链路的易于上手的数据处理工具,包括ODPS IDE、任务调度、数据分析、报表制作和元数据管理等,可以大大降低用户在数据仓库和商业智能上的实施成本,加快实施进度。天弘基金、高德地图的数据团队基于DPC完成他们的大数据处理需求。
批量计算
一种适用于大规模并行批处理作业的分布式云服务。批量计算可支持海量作业并发规模,系统自动完成资源管理,作业调度和数据加载,并按实际使用量计费。批量计算广泛应用于电影动画渲染,生物数据分析,多媒体转码,金融保险分析等领域。
数据集成
阿里集团对外提供的稳定高效、弹性伸缩的数据同步平台,为阿里云大数据计算引擎(包括ODPS、分析型数据库、OSPS)提供离线(批量)、实时(流式)的数据进出通道。
DDoS防护服务
针对阿里云服务器在遭受大流量的DDoS攻击后导致服务不可用的情况下,推出的付费增值服务,用户可以通过配置高防IP,将攻击流量引流到高防IP,确保源站的稳定可靠。免费为阿里云上客户提供最高5G的DDoS防护能力。
安骑士
阿里云推出的一款免费云服务器安全管理软件,主要提供木马文件查杀、防密码暴力破解、高危漏洞修复等安全防护功能。
阿里绿网
基于深度学习技术及阿里巴巴多年的海量数据支撑, 提供多样化的内容识别服务,能有效帮助用户降低违规风险。
安全网络
一款集安全、加速和个性化负载均衡为一体的网络接入产品。用户通过接入安全网络,可以缓解业务被各种网络攻击造成的影响,提供就近访问的动态加速功能。
DDoS高防IP
针对互联网服务器(包括非阿里云主机)在遭受大流量的DDoS攻击后导致服务不可用的情况下,推出的付费增值服务,用户可以通过配置高防IP,将攻击流量引流到高防IP,确保源站的稳定可靠。
网络安全专家服务
在云盾DDoS高防IP服务的基础上,推出的安全代维托管服务。该服务由阿里云云盾的DDoS专家团队,为企业客户提供私家定制的DDoS防护策略优化、重大活动保障、人工值守等服务,让企业客户在日益严重的DDoS攻击下高枕无忧。
服务器安全托管
为云服务器提供定制化的安全防护策略、木马文件检测和高危漏洞检测与修复工作。当发生安全事件时,阿里云安全团队提供安全事件分析、响应,并进行系统防护策略的优化。
渗透测试服务
针对用户的网站或业务系统,通过模拟黑客攻击的方式,进行专业性的入侵尝试,评估出重大安全漏洞或隐患的增值服务。
态势感知
专为企业安全运维团队打造,结合云主机和全网的威胁情报,利用机器学习,进行安全大数据分析的威胁检测平台。可让客户全面、快速、准确地感知过去、现在、未来的安全威胁。
云监控
一个开放性的监控平台,可实时监控您的站点和服务器,并提供多种告警方式(短信,旺旺,邮件)以保证及时预警,为您的站点和服务器的正常运行保驾护航。
访问控制
一个稳定可靠的集中式访问控制服务。您可以通过访问控制将阿里云资源的访问及管理权限分配给您的企业成员或合作伙伴。 日志服务
针对日志收集、存储、查询和分析的服务。日志服务可收集云服务和应用程序生成的日志数据并编制索引,提供实时查询海量日志的能力。
开放搜索
解决用户结构化数据搜索需求的托管服务,支持数据结构、搜索排序、数据处理自由定制。 开放搜索为您的网站或应用程序提供简单、低成本、稳定、高效的搜索解决方案。
媒体转码
为多媒体数据提供的转码计算服务。它以经济、弹性和高可扩展的音视频转换方法,将多媒体数据转码成适合在PC、TV以及移动终端上播放的格式。
性能测试
全球领先的SaaS性能测试平台,具有强大的分布式压测能力,可模拟海量用户真实的业务场景,让应用性能问题无所遁形。性能测试包含两个版本,Lite版适合于业务场景简单的系统,免费使用;企业版适合于承受大规模压力的系统,同时每月提供免费额度,可以满足大部分企业客户。
移动数据分析
一款移动App数据统计分析产品,提供通用的多维度用户行为分析,支持日志自主分析,助力移动开发者实现基于大数据技术的精细化运营、提升产品质量和体验、增强用户黏性。 阿里云旗下万网域名,连续19年蝉联域名市场NO.1,近1000万个域名在万网注册!除域名外,提供云服务器、云虚拟主机、企业邮箱、建站市场、云解析等服务。2015年7月,阿里云官网与万网网站合二为一,万网旗下的域名、云虚拟主机、企业邮箱和建站市场等业务深度整合到阿里云官网,用户可以网站上完成网络创业的第一步。