当前位置:首页 » 存储配置 » 企业存储调优

企业存储调优

发布时间: 2022-07-14 11:01:06

数据库设计,调优,存储过程,触发器,Job问题 DBA进

太理论的东西我也不一定能说得很清晰
1、一个上亿记录的一般都使用分区表,添加时只要索引不建太多没什么影响
2、在大表删除的时候使用ROWID删除是最快的
3、ORACLE脚本是没编译过了,存储过程是有编译过的,但要是用的频率不高,编译与没编译差距不大
4、开发经验就是做ORACLE项目经验
5、触发器会很大程度上影响性能,存储过程没什么影响,两者都只是几行代码
6、性能优化最多是sql优化、数据库软件优化、服务器优化
7、触发器什么上网络
8、我觉得你应该找些SQL入门的书来看

❷ SQL Server 优化存储过程的方法有哪些

优化存储过程有很多种方法,下面介绍最常用的7种。
1.使用SET NOCOUNT ON选项
我们使用SELECT语句时,除了返回对应的结果集外,还会返回相应的影响行数。使用SET NOCOUNT ON后,除了数据集就不会返回额外的信息了,减小网络流量。
2.使用确定的Schema
在使用表,存储过程,函数等等时,最好加上确定的Schema。这样可以使SQL Server直接找到对应目标,避免去计划缓存中搜索。而且搜索会导致编译锁定,最终影响性能。比如select * from dbo.TestTable比select * from TestTable要好。from TestTable会在当前Schema下搜索,如果没有,再去dbo下面搜索,影响性能。而且如果你的表是csdn.TestTable的话,那么select * from TestTable会直接报找不到表的错误。所以写上具体的Schema也是一个好习惯。
3.自定义存储过程不要以sp_开头
因为以sp_开头的存储过程默认为系统存储过程,所以首先会去master库中找,然后在当前数据库找。建议使用USP_或者其他标识开头。
4.使用sp_executesql替代exec
原因在Inside Microsoft SQL Server 2005 T-SQL Programming书中的第四章Dynamic SQL里面有具体描述。这里只是简单说明一下:sp_executesql可以使用参数化,从而可以重用执行计划。exec就是纯拼SQL语句。
5.少使用游标
可以参考Inside Microsoft SQL Server 2005 T-SQL Programming书中的第三章Cursors里面有具体描述。总体来说,SQL是个集合语言,对于集合运算具有较高的性能,而Cursors是过程运算。比如对一个100万行的数据进行查询,游标需要读表100万次,而不使用游标只需要少量几次读取。
6.事务越短越好
SQL Server支持并发操作。如果事务过多过长,或是隔离级别过高,都会造成并发操作的阻塞,死锁。此时现象是查询极慢,同时cup占用率极低。
7.使用try-catch来处理错误异常
SQL Server 2005及以上版本提供对try-catch的支持,语法为:
begin try
----your code
end try
begin catch
--error dispose
end catch
一般情况可以将try-catch同事务结合在一起使用。
begin try
begin tran
--select
--update
--delete
--…………
commit
end try
begin catch
--if error
rollback
end catch
====================== 分割线 =======================

‘自己的一些调优经验’
1. 少使用游标是个很好的建议,为此,我自己也遇到过一些事故,是游标所造成的,由于,游标是逐行逐行操作的,当记录较多时,经常会遇到超时的情况。
2. 多表join做查询时,查询的字段尽量不要使用case when then else end的语法,或者使用用户函数,例如:
select (case when fType=1 then '是' else '否' end) as fTypeName, dbo.F_GetFullName(fID) as fFullName from Table1 inner join Table2……
当两个表的数据量非常大时,你可以在查询分析器中明显感觉到:直接查询fType和fID与查询上面两个字段的速度,很可能使用了一个case when then就导致超时。
针对这种情况,可以分两种做法:
第一,把一些简单的转换可以放在程序中完成。
第二,如果需要通过ID查询全名或者全称,类似的,可以创建好视图,直接查视图,或者,先把所有的fFullName查出来放到临时表中,直接join临时表(如果这个数据不是很多的话),获得fFullName。
3. 少使用一些嵌套的查询,用临时表缓存中间数据,例如:
select * from Table1
inner join (
select count(1) as count, Table2.ID2 from Table2 inner join Table3 on ID2=ID3 group by Table2.ID2

) as t1 on t1.ID1 = Table1.ID1

我曾经遇到这样情况,上面的语句是那种情况的简化版本,把其他不影响结果的表格都去掉了,发现一个奇怪的现象:嵌套查询的结果集并不大,大约就200多行,Table1有6w条记录,结果,这个查询语句超时,查询分析器中执行2分钟也得不到结果。
后来,这样一改,就Ok了,3秒出结果:
select count(1) as count, Table2.ID2 into #temp from Table2 inner join Table3 on ID2=ID3 group by Table2.ID2
select * from Table1
inner join #temp as t1 on t1.ID1 = Table1.ID1
这样一改,效率提升了几十倍,猜想:可能是嵌套的查询是动态的,每一行的join可能都需要先执行嵌套的查询,从而导致效率极差。
所以,如果查询足够复杂,join多个表,需要连接多个通过group by求和、求平均数等运算计算出来的中间数据,那么,不妨多使用临时表缓存中间数据。
4. 还有一些是必须遵守的一些默认规则,比如:

先过滤后连接。
查询的字段最要不要用“*”,指定需要用的字段,减少网络流量。

‘总结’
对于性能的追求是没有极限的,做到你所能做到的,这是一个很好的习惯。
有些业务逻辑放在存储过程中处理比较方便,而有些业务逻辑交给程序来处理,同样会提升系统整体的效率,看实际情况而定。
总之,尽可能减少这些容易引发性能问题的隐患,系统就会跑得更稳定更有效率,一切从小细节做起。

❸ 在节能、提效方面, 浪潮信息存储怎样

浪潮信息存储一直在节能、提效方面探索和创新,早在2019年就提出新数据时代前瞻洞察,推出“绿色节能和性能兼备”的全闪存储旗舰产品,比如浪潮全闪存储基于 “iTurbo 2.0智能加速引擎”,构建了由傲腾和NVMe闪存盘组成的智能分层的存储资源池,通过软硬联合调优大的的提升了存储性能并降低了空间和能源消耗。

❹ pl/sql 怎么把 存储过程 放到 执行计划 调优

举个例子
begin
sys.dbms_job.submit(job => :job,
what => '存储过程名称;',
next_date => to_date('25-09-2008 00:00:01', 'dd-mm-yyyy hh24:mi:ss'),
interval => 'sysdate 1');
commit;
end;
调优的话,就得看你具体的语句了,只能具体问题具体分析

❺ 数据库调优是什么

一、概述

随着数据库在各个领域的使用不断增长,越来越多的应用提出了高性能的要求。数据库性能调优是知识密集型的学科,需要综合考虑各种复杂的因素:数据库缓冲区的大小、索引的创建、语句改写等等。总之,数据库性能调优的目的在于使系统运行得更快。

调优需要有广泛的知识,这使得它既简单又复杂。

说调优简单,是因为调优者不必纠缠于复杂的公式和规则。许多学术界和业界的研究者都在尝试将调优和查询处理建立在数学基础之上。

称调优复杂,是因为如果要完全理解常识所依赖的原理,还需要对应用、数据库管理系统、操作系统以及硬件有广泛而深刻的理解。

数据库调优技术可以在不同的数据库系统中使用。如果需要调优数据库系统,最好掌握如下知识:1)查询处理、并发控制以及数据库恢复的知识;2)一些调优的基本原则。

这里主要描述索引调优。

二、索引调优

索引是建立在表上的一种数据组织,它能提高访问表中一条或多条记录的特定查询效率。因此,适当的索引调优是很重要的。

对于索引调优存在如下的几个误区:

误区1:索引创建得越多越好?

实际上:创建的索引可能建立后从来未使用。索引的创建也是需要代价的,对于删除、某些更新、插入操作,对于每个索引都要进行相应的删除、更新、插入操作。从而导致删除、某些更新、插入操作的效率变低。

误区2:对于一个单表的查询,可以索引1进行过滤再使用索引2进行过滤?

实际上:假设查询语句如下select * from t1 where c1=1 and c2=2,c1列和c2列上分别建有索引ic1、ic2。先使用ic1(或ic2)进行过滤,产生的结果集是临时数据,不再具有索引,所以不可使用ic2(或ic1)进行再次过滤。

索引优化的基本原则:

1、将索引和数据存放到不同的文件组

没有将表数据和索引数据存储到不同的文件组,而不加区别地将它们存储到同一文件组。这样,不但会造成I/O竞争,也为数据库的维护工作带来不变。

2、组合索引的使用

假设存在组合索引it1c1c2(c1,c2),查询语句select * from t1 where c1=1 and c2=2能够使用该索引。查询语句select * from t1 where c1=1也能够使用该索引。但是,查询语句select * from t1 where c2=2不能够使用该索引,因为没有组合索引的引导列,即,要想使用c2列进行查找,必需出现c1等于某值。

根据where条件的不同,归纳如下:

1) c1=1 and c2=2:使用索引it1c1c2进行等值查找。

2) c1=1 and c2>2:使用索引it1c1c2进行范围查找,可以有两种方法。

方法1,使用通过索引键(1,2)在B树中命中一条记录,然后向后扫描找出 第一条符合条件的记录,从此记录往后的每一条记录都是符合条件的。这种方法的弊端在于:如果c1=1 and c2=2对应的记录数很多,会产生很多无效的扫描。

方法2,如果c2对应的int型数据,可以使用索引键(1,3)在B树中命中一条记录,从此记录往后的每一条记录都是符合条件的。

本文中的例子均采用方法1。

3)c1>1 and c2=2:因为索引的第一个列不是等于号的,索引即使后面出现了c2=2,也不能将c2=2应用于索引查找。这里,通过索引键(1,- ∞)在B树中命中一条记录,向后扫描找出第一条符合c1>1的记录,此后的每一条记录判断是否符合c2=2,如果符合则输出,否则过滤掉。这里我们称c2=2没有参与到索引运算中去。这种情况在实际应用中经常出现。

4)c1>1:通过索引键(1,- ∞) 在B树中命中一条记录,以此向后扫描找出第一条符合c1>1的记录,此后的每条记录都是符合条件的。

3、唯一索引与非唯一索引的差异

假设索引int1c1(c1)是唯一索引,对于查询语句select c1 from t1 where c1=1,达梦数据库使用索引键(1)命中B树中一条记录,命中之后直接返回该记录(因为是唯一索引,所以最多只能有一条c1=1的记录)。

假设索引it1c2(c2)是非唯一索引,对于查询语句select c2 from t2 where c2=2,达梦数据库使用索引键(2)命中B树中一条记录,返回该记录,并继续向后扫描,如果该记录是满足c=2,返回该记录,继续扫描,直到遇到第一条不符合条件c2=2的记录。

于是,我们可以得知,对于不存在重复值的列,创建唯一索引优于创建非唯一索引。

4、非聚集索引的作用

每张表只可能一个聚集索引,聚集索引用来组织真实数据。语句“create table employee (id int cluster primary key,name varchar(20),addr varchar(20))”。表employee的数据用id来组织。如果要查找id=1000的员工记录,只要用索引键(1000)命中该聚集索引。但是,对于要查找name=’张三’的员工记录就不能使用该索引了,需要进行全表扫描,对于每一条记录判断是否满足name=’张三’,这样会导致查询效率非常低。

要使用聚集索引,必需提供id,我们只能提供name,于是需要引入一个辅助结构实现name到id的转换,这就是非聚集索引的作用。该非聚集索引的键是name,值是id。于是语句“select * from employee where name=’张三’”的执行流程是:通过键(’张三’)命中非聚集索引,得到对应的id值3(假设’张三’对应的id为3),然后用键(3)命中聚集索引,得到相应的记录。

5、是不是使用非聚集索引的查询都需要进行聚集的查询?

不是的,虽然在上一点中查询转换为聚集索引的查找,有时候可以只需要使用非聚集索引。

创建表并创建相应的索引:create table t1(c1 int,c2 int,c3 int);create index it1c2c3 on t1(c2,c3)。查询语句为:select c3 from t1 where c2=1。

因为索引it1c2c3(c2,c3)覆盖查询语句中的列(c2,c3)。所以,该查询语句的执行流程为:通过索引键(1,- ∞)命中索引it1c2c3,对于该记录直接返回c3对应的值,继续向后扫描,如果索引记录中c1还是等于1,那么输出c3,以此类推,直到出现第一条c1不等于1的索引记录,结束查询。

6、创建索引的规则

创建索引首先要考虑的是列的可选择性。比较一下列中唯一键的数量和表中记录的行数,就可以判断该列的可选择性。如果该列的“唯一键的数量/表中记录行数”的比值越接近于1,则该列的可选择行越高。在可选择性高的列上进行查询,返回的数据就较少,比较适合索引查询。相反,比如性别列上只有两个值,可选择行就很小,不适合索引查询。

❻ 如何优化RAID控制器提升存储性能

许多参数都与缓存和缓存利用率,以及众所周知的RAID
关于RAID级别与性能有关的文章已经很多,这里就不再重复了,主要谈一下RAID的调优,如果你想通过配置RAID优化存储性能,不管是安装在PC服务器上的RAID控制器,还是高端企业级存储阵列,阅读本文之后,你将有清晰的方向。
首先我们来看看RAID控制器的种类,目前我们常见的有以下三种:
1、企业级“Active/Active”:这种控制器允许你从任何主机向任何LUN写入数据,不会造成性能下降,它通常具备很大的镜像缓存(一般会超过32GB),这种控制器支持热插播硬盘,正常运行时间很长,现在与控制器通信一般是走光纤通道(FC)或以太网光纤通道(FCoE)。
2、中端“主动/被动”:这种控制器对于每个LUN来说都有两个侧面,一个主动侧面,它是主要路径,一个被动侧面,用于故障转移,你通常需要在主要和故障转移侧之间分割LUN,平均划分你的系统,缓存可以在控制器上镜像,但这种控制器的弹性没有企业级控制器好。
3、RAID主机卡:这种卡插入到PCIe插槽,通过SAS或SATA数据线连接到硬盘,它没有独立的处理器,而企业级和中端控制器都有,它们支持的硬盘数量也没有前两种控制器多,此外,要想故障转移到另一个控制器也是不可能的,你系统的弹性完全取决于你的PCIe插槽和控制器卡。
RAID缓存调整和配置
可以从三个方面调整RAID缓存:
调整缓存,读优先,写在后。
调整缓存块大小。
调整缓存镜像(对于中端控制器来说特别重要)。
读优先,写在后:你可能会认为这样调整后不会产生实质性效果,但事实证明不是你想象的那样,如果读优先,它会认为数据是连续的,这样可以为数据分配连续的地址空间,RAID控制器不知道文件系统或数据的拓扑结构,它只知道连续块地址。如果你的文件系统分配单元小于RAID条带尺寸,如果同时有多个文件写入,这些文件将会在这些RAID条带上变成碎片。
例如,如果文件系统分配尺寸是64KB,RAID 5
8+1条带大小是512KB,同时有多个文件写入,RAID控制器做得最多的事情就是读取你请求的数据,在这里是64KB,也可能是另一个64KB,如果你连续读,直到读完整个条带,这就是读优先,另一方面,如果你只读一个64KB的块,条带中剩余部分的数据来自其它文件,那么读优先只有害处,只有RAID条带大小和文件系统分配单元相匹配时,实施读优先才会获得很好的性能。
写在后:将块读入缓存以便写入内容,当数据命中缓存时向写入程序发送一个响应,这里的关键是数据在RAID条带上必须是对齐的,如果没有对齐,RAID必须完成“读-修改-写入”(读入条带数据,修改成新数据,再写入条带),这样的后果是开销大,延迟严重,RAID缓存的目的本来就是为了隐藏写入磁盘的延迟,当数据命中缓存时接收确认。调整写在后通常需要针对读优先指定需要分配多少缓存空间,此外还需要指定可读或写的最小缓存块大小。
调整RAID缓存块大小
缓存块大小是可以读入缓存的最小数据量,例如,在一块磁盘上的一个RAID分配单元可能是32KB,你可能会认为该磁盘的所有I/O单元都是32KB,但如果缓存块大小是4KB,那对该磁盘的最小读或写大小应该是4KB,而不是32KB,它是今天磁盘扇区大小的8倍,如果你的文件系统分配单元很大,你的写入请求也很大,但缓存块大小很小,就可能会降低RAID的性能。
我所见过的大多数RAID控制器都是这样,缓存块越小速度越慢,因为它们没有足够的处理器能力管理所有的块,也许等下一代控制器上市会改变这一现状(因为处理性能将会提升)。只有在RAID分配单元中数据处于非对齐状态时,缓存块小一点更好。
想象一下以小的请求写,大的请求读,文件系统分配单元和条带大小匹配时会是什么状况,发生多个连续写操作时,文件系统不会产生严重的碎片,并且读优先将会起作用,如果读比写更大,读优先也有帮助,所有RAID控制器会认为读是连续的,因此在调整读操作时,你需要知道读和写请求大小,并确定同一时间有多少文件写入,如果同一时间只有一个文件写入,数据将很可能是连续分配的,直到文件系统产生碎片,读优先将会带来很大的好处。
另一方面,如果有多个文件写入,并且写入大小和文件系统分配单元比条带尺寸小,这时读优先的作用就很小,甚至毫无作用。归结起来就是:读优先适用于写和分配单元相等,或者当有多个文件写入时,大于RAID的条带尺寸。
调整缓存镜像
在许多中端RAID产品中,写缓存镜像是一个常见的功能,所有写入内容全部镜像到RAID控制器中,控制器处理I/O请求,将其写入控制器的另一半缓存中,如果数据在条带上是完全对齐的,有些厂商在控制器上使用一些技术绕过缓存写入请求,但在普通环境中是具有写缓存镜像的,每一次写操作都要写入到缓存,在向I/O请求发出确认前再写入到另一个缓存,写缓存镜像因此通常会降低性能,因为写入其它缓存存在延迟,并会占用一定的带宽,每个缓存必须镜像到其它缓存,因此缓存空间利用率会下降一半。
如果厂商提供了读或写缓存调整参数,可以根据负载和可靠性考虑进行微调。我经常听到的一个问题是用户到底应不应该使用写缓存镜像,这要根据你对数据可靠性的需要而定。假设你正在写一个文件,将数据写入一个没有写缓存镜像系统的缓存,如果这个时候整个控制器出现故障(从缓存到磁盘),你的应用程序会被告知写入成功,但数据却没有来得及写入磁盘。虽然这种事故发生的几率非常小,但仍然是可能发生的,我就有幸见过一次。
如果你对同一个文件再执行一个写入操作,你可能会遭遇I/O错误,大多数RAID这个时候会意识到它们不能从缓存写入到磁盘,因此会暴露错误,有的RAID控制器会故障转移到可以工作的一侧,你的操作得以成功完成,但实际上已经有一个文件已经丢失了,但你的应用程序却不知道,如果文件少写入了内容,这可能会引发后续一系列的连锁反应,这也是为什么写缓存镜像默认启用的原因。调整写缓存镜像需要指定为写入操作保留多少缓存空间,写缓存镜像开关应该开启,如果控制器损坏,想要找出损坏的数据或缺少的数据几乎是不可能的。
其实只要掌握一点RAID控制器的常识,调整它就不难了。我们需要记住的是,如果同时有多个文件写入,文件系统分配单元很小时,读优先是没有用的,最糟糕的一个例子就是Windows上的NTFS。

❼ 存储应该如何加速调优数据库性能

提升数据库的效能,存储应该如何加速调优? 对于日志文件。在判定上述数据库三个组件中优化哪个部分时,索引通常是大部分用户的问题所在。简单来说,几乎所有的数据库都需要进行查询操作,并且在大多数情况下都会使用到索引。通常来讲数据库有越多的索引,其更新处理就会变得越慢。使得这些索引更快速地更新并快速地返回结果几乎都能够提升性能。这些索引会受到并发检索请求数量,以及处理这些请求所花费的时间的影响。索引通常对读取文件操作十分,不过随着索引数量的增加和更新,其需要花费大量的写操作工作。 处理索引引起的性能问题的正确方式主要取决于使用环境。一台单独的存放本地数据的数据库服务器可以通过在服务器上安装一系列镜像驱动器,专门用作存放索引文件来提升性能。即便是将数据存放在存储区域网络(SAN)上单独的服务器也可以采用同样的方式,尤其是在存储网络比较慢的情况下。(比如1Gb的iSCSI以太网或2Gb的光纤通道) 假如数据库通过多台应用服务器进行共享,本地磁盘日志可能并不适合。同样的,这取决于数据库,不过一般来说改进共享存储环境是需要的。这可以简单的通过在SAN环境中设置专用的驱动器来存储索引方式来实现,其运行方式同样需要使用镜像方式而非在普通的RAID组。这甚至可以使用短路程磁盘方式,只使用每块磁盘的外围部分。索引相对较小,通常不需要使用整块驱动器的存储空间。 在所有上述情况下,基于闪存的固态磁盘驱动器(SSD)是一种不错的方式来解决索引的性能问题。由于索引文件尺寸较小,只需花费一块企业级固态磁盘的代价就能够在使用直连存储的数据库服务器上实现客观的性能改善。当使用共享存储时,安装在存储系统上的SSD存储索引文件可以减缓性能问题,虽然这样的代价会相对较高。需要记住的是这两种情况下都需要进行彻底的存储更新。 对于日志文件。日志文件和索引相似,不过其一般只处理写请求,通过上述方式之后同样能够改善性能。不过在使用闪存SSD时要有更多考虑。日志文件的写操作会多出许多,而基于闪存的SSD的整个生命周期中可支持的写操作次数有一定限制。虽然SSD最大写次数在最近几年中得以改善,日志文件这样的工作类型使用基于闪存的SSD仍为时尚早。

❽ 存储管理功能有什么具体概念是啥谢谢

存储管理操作流程是整个系统管理流程中的关键组件之一。存储管理主要关注于存储管理方面的运行和维护工作。该流程用以对生产IT环境中的数据和数据资源进行定义、跟踪及维护。 数据与数据资源的定义涉及以下任务: •制订必要的数据分类、存储与恢复计划
•制订必要的数据存储与恢复策略及流程

数据与数据资源的跟踪涉及以下任务: •制订适当的存储资源监控流程(例如可用性、容量与性能等) •根据业务需求监控存储资源以确保处于可用状态 •根据当前发展趋势预测未来存储需求

数据与数据资源的维护涉及以下任务: •针对必要的数据和/或存储资源变更需求根据变更管理流程提交变更请求(RFC) •通过对存储资源进行调整与优化的方式提高可用性、容量或性能需求(服从变更管理流程规定) •确保数据按照预先制订的数据安全策略进行存储 •采取适当的措施以满足存储需求变更要求

存储管理操作流程由以下两个主要关注领域组成:数据备份与恢复操作;以及存储资源管理。每个领域包含不同的活动与任务,本文对其进行了详细的描述。 存储资源管理是一项关键存储管理活动,它主要关注于确保诸如磁盘之类的重要存储介质通过正确的文件系统进行格式化和安装,以及(诸如磁带、CD之类的)移动存储介质按照业务要求进行组织(例如通过库的方式组织)、使用、循环及淘汰。如需了解更多相关信息,请参考“磁盘管理”、“文件系统管理”和“磁带管理”章节。 此外,存储资源管理还包括通过管理技术来监控存储资源,从而确保其满足可用性、容量及性能需求。如需获取更多相关信息,请参考“制订存储监控与管理计划并对存储活动进行监控”章节。 现有数据中心内的后续日常存储管理活动包括:数据备份、还原与恢复操作;存储资源管理活动;以及本文中所描述的其它活动。

目的与目标

存储管理的目的和目标是凭借可用技术资源确保通过适当的存储设备来满足SLA所规定的业务需求。这种目标要求能够及时确定故障,理解未来业务需求可能对存储所产生的影响,并通过最为高效、便捷的方式来确保存储管理功能的实现。
内容范围
存储管理关注于设计、实施并运行能够满足组织机构业务需求的适当存储解决方案: •存储管理制订数据分类、存储、还原和恢复所必需的策略与过程。 •存储管理对存储资源进行实时监控并预测未来的存储资源需求。 •存储管理实施旨在维持稳定、高效、可管理的存储环境进而满足业务需求的变更与调优操作。

热点内容
db2数据库别名 发布:2024-10-08 08:19:02 浏览:239
如何更换安卓系统时钟 发布:2024-10-08 08:12:54 浏览:396
电脑创建服务器软件 发布:2024-10-08 08:12:47 浏览:476
如何防微信恶意找回密码 发布:2024-10-08 08:01:58 浏览:813
aspnet存储过程分页 发布:2024-10-08 08:01:47 浏览:460
王者安卓怎么拍高清视频教程 发布:2024-10-08 07:57:04 浏览:263
酒吧灯光编程 发布:2024-10-08 07:52:42 浏览:8
别克英朗买15哪个配置好 发布:2024-10-08 07:43:38 浏览:237
android安装sdk 发布:2024-10-08 07:42:41 浏览:329
qq空间音乐缓存 发布:2024-10-08 07:05:49 浏览:738