Ⅰ sql server awe怎么设置
由于32位Windows用户进程有4GB的虚拟地址空间。其中2GB给核心态,剩下2GB给用户态。这两部分严格分开。Windows不会因为其中某一块
内存地址空间用尽而将另外一块的空间让出。
由于SQLSERVER的绝大部分指令都运行在用户态下,就是说SQLSERVER的内存基本上使用用户态地址空间资源。现在的情况是2GB地址空间资源
对于SQLSERVER来说严重阻碍了SQLSERVER有效利用硬件资源
所以SQLSERVER引入了AWE address windowsing extensions(地址空间扩展)。这是允许32位应用程序分配64GB物理内存,并把视图或窗口
映射到2GB虚拟地址空间的机制。
使用AWE,使得一个应用程序能够访问最多达64GB的物理内存!!!
在SQL2000的企业版,SQL2005/2008的企业版和标准版都支持这个技术,也能够享受这个技术带来的好处
开启这个功能的语句,执行完之后,重启SQLSERVER服务即可
1 EXEC sys.sp_configure @configname = 'AWE Enabled', -- varchar(35)
2 @configvalue = 1 -- int
3 RECONFIGURE
4 GO
AWE具体实现图
有几点需要注意的:
(1)开启这个功能需要SQLSERVER启动帐户在Windows上的lock pages in memory权限。没有这个权限,AWE就不能成功被开启。
启动的SQLSERVER这时候只能使用2GB的地址空间。
所以DBA要确认一下SQLSERVER的errorlog里有没有相关的信息
成功开启:server Address Windowing Extensions enabled
消息
Address Windowing Extensions is enabled. This is an informational message only; no user action is required.
开启失败:Cannot use Address Windowing Extensions because lock memory privilege was not granted
(2)这个功能是在应用层面有意识地使用,而不是在Windows层面实施的。也就是说SQLSERVER在申请内存时,通过特殊API调用申请到的,
如果SQLSERVER不调用这个功能,就还会在普通的2GB虚拟地址空间申请内存。在SQLSERVER中不是所有的内存申请都会调用AWE技术,
只有先reserve,再commit的内存调用,SQLSERVER才使用AWE让他们使用到扩展的内存。其他方式申请的内存只能使用普通的2GB地址空间。
正因为这样,AWE不能称为解决SQLSERVER地址空间不足的最终解决方案。使用64位的服务器,虚拟地址空间可以达到8TB,
大于现在绝大多数的单个服务器的物理内存数。在64位下运行的SQLSERVER,其性能往往比在32位上有比较明显的提高。
最后附上各个版本Windows上支持的最大内存数
配置 应用虚拟地址空间大小 最大物理内存数 是否支持AWE/locked pages support
32位SQLSERVER 2GB 64GB YES
32位SQLSERVER + /3GB boot.ini参数 3GB 16GB YES
32位SQLSERVER 应用在x64位操作系统(WOW) 4GB 64GB YES
32位SQLSERVER 应用在IA64操作系统(WOW) 2GB 2GB NO
64位SQLSERVER 应用在x64操作系统 8TB 2TB YES
64位SQLSERVER 应用在IA64操作系统 7TB 2TB YES
Ⅱ SQL数据库的高手来啊,请问SQL的问题 帮我分析下这些语句,是干什么的。
I+58a1A+RrM= 这个就是cashsum的加密吧
Ⅲ C++中,对一个空的容器 用reserve(10) , 如 vector<int> ttt; ttt.reserve(10); ttt会有10个容量吗
reserve(10)将为容器保留至少10的容量(不小于resver的参数).这个函数只负责调整可用空间大小.不对容器中现有数据和大小造成影响.如果容器现有容量已经超过10.则不会有任何影响.
可用使用capacity()函数查看当前容器的预留空间大小
resize(10)将对容器造成实际影响.即将容器的大小调整为10.
如若容器现有数据超过10.则被截断到10.如果现有数据不到10在使用默认的数据将容器大小填充到10.对于vector<int>则,其默认数据为int(0).
Ⅳ 为什么这句SQL总是出错 PHP输出的SQL语句在命令行里可以执行 PHP里就执行出错提示语法错误
应该是入库的数据没有做处理,入库的时候应该将特殊字符加转义符号。
例如:addslashes()函数进行处理,请试一下如下改动行不行。
$sql .= "INSERT INTO reserveitem (ordersid, pname, typeid, pmodel, sellprice, norm, pcounts) VALUES ('" . addslashes($order_id) . "', '" . addslashes($items[$x]['pname']) . "', '" . addslashes($items[$x]['typeid']) . "', '" . addslashes($items[$x]['model']) . "', '" . addslashes($items[$x]['soldprice']). "', '" . addslashes($items[$x]['norm']). "', '" . addslashes($items[$x]['count']). "');";
Ⅳ SQL判断多笔数据中,字段相同的数据只取其中一笔。如下 。
WITHtAS(SELECTareaIdFROM表
GROUPBYareaIdHAVINGCOUNT(areaId)>1)
SELECT*FROM表WHEREReserverState='run'ANDareaIdIN(SELECTareaIdFROMt)
UNIONALL
SELECT*FROMtWHEREareaIdNOTIN(SELECTareaIdFROMt)
Ⅵ 求sql怎么一次用insert 添加多条数据
--一条insert只能插入一行数据,除非你有一个相同数据类型的表需要复制表数据批量插入可以使用
InsertintoTable2(field1,field2,...)selectvalue1,value2,...fromTable1
--要求目标表Table2必须存在,由于目标表Table2已经存在,所以我们除了插入源表Table1的字段外,还可以插入常量。
Ⅶ C中,Reserve函数有何作用如何实现这个函数
设置字符串的能力有很大的数量至少为一个指定的次数。
#include <string>
#include <iostream>
int main( )
{
using namespace std;
string str1 ("Hello world");
cout << "The original string str1 is: " << str1 << endl;
basic_string <char>::size_type sizeStr1, sizerStr1;
sizeStr1 = str1.size ( );
basic_string <char>::size_type capStr1, caprStr1;
capStr1 = str1.capacity ( );
// Compare size & capacity of the original string
cout << "The current size of original string str1 is: "
<< sizeStr1 << "." << endl;
cout << "The capacity of original string str1 is: "
<< capStr1 << "." << endl << endl;
// Compare size & capacity of the string
// with added capacity
str1.reserve ( 40 );
sizerStr1 = str1.size ( );
caprStr1 = str1.capacity ( );
cout << "The string str1with augmented capacity is: "
<< str1 << endl;
cout << "The current size of string str1 is: "
<< sizerStr1 << "." << endl;
cout << "The new capacity of string str1 is: "
<< caprStr1 << "." << endl << endl;
// Compare size & capacity of the string
// with downsized capacity
str1.reserve ( );
basic_string <char>::size_type sizedStr1;
basic_string <char>::size_type capdStr1;
sizedStr1 = str1.size ( );
capdStr1 = str1.capacity ( );
cout << "The string str1 with downsized capacity is: "
<< str1 << endl;
cout << "The current size of string str1 is: "
<< sizedStr1 << "." << endl;
cout << "The reced capacity of string str1 is: "
<< capdStr1 << "." << endl << endl;
}