MSSQL千万级数据实现是否可行?(mssql 千万级可以吗)
SQL Server支持可伸缩性很强,可以完成千万级数据的处理任务,末尾用户可以通过优化技术来提高查询性能以完成更多的任务。
SQL Server能够处理很多数据,也可以使用到千万级的数据处理中,针对不同数据需求进行处理:
1.针对海量数据存储:可以把较大的数据量进行分段,分成若干小的数据段,然后对每个数据段创建一个表,最后在程序中对这些表做必要的处理即可。
例如:
使用游标声明分段表:
DECLARE @table CURSOR
SET @table = CURSOR FAST_FORWARD
FOR
select table_name from sys.tables
where table_name like ‘LARGE_DATA_%’
批量插入数据:
while (1=1)
以 @table 为游标进行下一步处理
BEGIN
DECLARE @tableName sysname
FETCH NEXT FROM @table INTO @tableName
IF (@@FETCH_STATUS = -1)
BREAK
INSERT INTO @tableName
VALUES (‘data1’, ‘data2’, ‘data3’)
END
2.针对海量数据查询:需要使用SQL Server的一些技术,比如快速并行运行查询,分割表,索引维护的增删改操作等,只要跟踪特定的查询优化建议,可以让用户得到更好的查询性能,达到千万级数据的处理服务要求。
管理查询优先级:
USE AdventureWorks;
EXEC sp_configure ‘show advanced options’, 1;
RECONFIGURE;
EXEC sp_configure ‘max degree of parallelism’, 4;
RECONFIGURE;
–设置优先级
ALTER PROCEDURE dbo.usp_sales_by_product
WITH EXECUTE AS SELF
RECOMPILE
OPTION (OPTIMIZE FOR (@ProductID UNKNOWN))
例如:
–使用RECOMPILE关键字动态生成查询执行计划
EXECUTE sp_executesql
N’SELECT datename(dw, OrderDate) AS [Week Day],
SUM(TotalDue) AS [Amount Sold]
FROM AdventureWorks2008.Sales.SalesOrderHeader
WHERE OrderDate BETWEEN @StartDate AND @EndDate
GROUP BY datename(dw, OrderDate)
OPTION (RECOMPILE)’,
N’@StartDate DateTime, @EndDate DateTime’,
@StartDate, @EndDate;
总结:
SQL Server在支持千万级数据处理任务上实现是可行的,关键在于管理查询优先级,通过合理的分段存储和使用查询优化建议,末尾用户可以有效的改善性能,提升处理数据的能力。