|
|
|
大家好,banq好,我想问大家一个系统速度,或者说是数据库的问题
|
2007年01月07日 16:30
|
|
数据库
缓存
性能调优
伸缩性
|
|
项目大概情况如下:我们客户给我们提供了全美所有公司的数据,一共二千万条左右.按照前台的输入,查询相应的结果,结果一般很多,至少几百条记录,还有按各种可能的情况排序.系统的开发是ASP+储存过程+SQL Server 2005,一般数据库的优化方法都用在上面了,可是速度奇慢,后来,我们采用按照州建表,把数据拆开.系统的相应速度还是在20-30s内.我们不知道如何再进一步提高系统速度.现在客户提出要求,让我们用.net来做前台,我想问各位的是, 1.对于这种大数据量的处理,大家一般是如何做的呢?怎样才能让系统的相应时间缩短在10s以内呢? 2.如果还是按照.net+存储过程的设计方法,其他不做太大的改动的话,能明显提供系统相应时间吗? 谢谢各位高手和banq的指教,谢谢!
|
|
|
|
|
|
re:大家好,banq好,我想问大家一个系统速度,或者说是数据库的问题
|
2007年01月08日 18:09
|
|
|
提高系统性能,不能闷在数据库上面,这上面潜力总是有限的,而应该抬头向上,使用分布式计算,Google搜索就是一个分布式计算的例子。
具体来说,就是使用缓存,根据你的业务特点,将那些重复查询的数据缓存在中间服务器内存中。
如果你的数据可重复性很小,可以参考google这样缓存机制,查查资料。
|
|
|
|
|
|
re:大家好,banq好,我想问大家一个系统速度,或者说是数据库的问题
|
2007年01月08日 18:10
|
|
|
这种大数据量的查询不可以做实时检索的,效率太低.尤其是企业信息这种极少变动的数据. 可以根据提供给用户的查询条件,在后台用程序预先计算生成中间表.响应用户查询请求时,直接在很小的中间表里搜索就可以了. 另外,个人感觉按照州拆分数据可能是个坏主意.有可能一个查询需要在不同的表里执行50遍才能有结果.能快得了吗?
|
|
|
|
|
|
re:大家好,banq好,我想问大家一个系统速度,或者说是数据库的问题
|
2007年01月08日 22:43
|
|
|
|
就数据库来说.可以做以下几方面的工作.一分析数据的构成.现在我没太搞清楚,是什么样的数据.我们是保险行业的.我们把一些特殊数据按年分.每年建成一个表.不用储存过程同样是操作数据库不能提高性能.查询时建立临时表.同时使用多层结构的应用程序.最直接的方法弄个好机器就行了.
|
|
|
|
|
|
回复:大家好,banq好,我想问大家一个系统速度,或者说是数据库的问题
|
2008年12月10日 15:11
|
|
|
|
|
|
|
|
|
回复:re:大家好,banq好,我想问大家一个系统速度,或者说是数据库的问题
|
2008年12月10日 20:16
|
|
|
|
|
|
|
|
|
大家好,banq好,我想问大家一个系统速度,或者说是数据库的问题
|
2008年12月14日 11:42
|
|
|
数据库直接安装在文件中的吧,试试把数据库文件直接安装到裸磁盘中。
使用原始分区 Microsoft SQL Server 2000 支持使用原始分区创建数据库文件。原始分区是指没有用 Windows NT 文件系统(如 FAT 和 NTFS)格式化的磁盘分区。在某些情况下,使用在原始分区上创建的数据库,可以获得比在 NTFS 或 FAT 上更高的性能。但是,对于大多数安装,首选方法是使用在 NTFS 或 FAT 分区上创建的文件。 在原始分区上创建数据库文件时,不必指定构成该数据库的文件的物理名称,只需指定要在其上创建数据库文件的磁盘的驱动器号。 如果正在使用 Microsoft Windows 2000 Server,则可以创建指向原始分区的已装入驱动器。在空文件夹中装入一个本地驱动器时,Windows 2000 将给该驱动器分配驱动器路径而不是驱动器号。已装入驱动器不受驱动器号强加的 26 个驱动器的限制,因此可以使用任意多个原始分区。在已装入驱动器上创建数据库文件时,必须在文件名后尾随一个反斜线符号来结束驱动器路径,例如,E:\ Sample name\。有关创建已装入驱动器的信息,请参见 Windows 2000 Server 文档。 在使用原始分区时,需考虑如下限制: 每个原始分区上只能创建一个数据库文件。逻辑分区必须配置为一个单一的数据库文件,因为原始分区上没有文件系统。 常规文件系统操作(如复制、移动和删除等)不能在原始分区上使用。 原始分区上的数据库文件不能用 Windows NT 备份实用工具备份。但是,仍可创建 SQL Server 数据库备份或事务日志备份。 原始分区上的数据库文件不能自动扩充。或者最初就以其实际大小创建数据库,或者手动扩充数据库文件。有关更多信息,请参见扩充数据库。 只能使用字母编号的分区(例如 E:)或已装入的驱动器(例如 E:\Sample name\)。不能使用数字编号的设备。 文件系统服务(例如坏块替换)在原始分区上不可用。 H. 使用原始分区 下面的示例使用原始分区创建名为 Employees 的数据库。执行语句时,原始分区必须存在,并且每个原始分区只能创建一个文件。 USE master GO CREATE DATABASE Employees ON ( NAME = Empl_dat, FILENAME = 'f:', SIZE = 10, MAXSIZE = 50, FILEGROWTH = 5 ) LOG ON ( NAME = 'Sales_log', FILENAME = 'g:', SIZE = 5MB, MAXSIZE = 25MB, FILEGROWTH = 5MB ) GO I. 使用已装入的驱动器 下面的示例使用指向原始分区的已装入驱动器创建名为 Employees 的数据库。此功能只在 Microsoft Windows 2000 Server 中才可用。.执行语句时必须已经存在已装入的驱动器和原始分区,并且每个原始分区上只能有一个文件。当在已装入的驱动器上创建数据库文件时,必须用尾随反斜线结束驱动器路径。 USE master GO CREATE DATABASE Employees ON ( NAME = Empl_dat, FILENAME = 'd:\sample data dir\', SIZE = 10, MAXSIZE = 50, FILEGROWTH = 5 ) LOG ON ( NAME = 'Sales_log', FILENAME = 'd:\sample log dir\', SIZE = 5MB, MAXSIZE = 25MB, FILEGROWTH = 5MB ) GO
|
|
|
|