|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
也就是说在php本地调用pdoprepare中的mysql_real_escape_string来操作query,使用的是本地单字节字符集,即编码为xbfx5cx27,并带入到mysql中查询,由于使用setnames设置了连接字符集.server
深切SQLSERVER2000的内存办理机制
http://msdn.microsoft.com/data/default.aspx?pull=/library/en-us/dnsqldev/html/sqldev_01262004.asp
KenHenderson
MicrosoftCorporation
备注:KenHenderson从开辟者的角度来论述了SQLSERVER2000内存办理的外部机制
简介
在本专栏中,我们将从一个开辟者的角度来探究SQLSERVER的内存办理。因而我们将会商服务器内存办理的API和操纵体系的内存办理机制,他们是怎样运转的?以这类新奇的体例来切磋SQLSERVER内存办理,可使开辟职员分明个中的来龙去脉,精晓一个产物,我们要懂得它外部是怎样运转和特定的用处。
我们起首入手下手的研讨,它包含一些Windows内存办理的基础道理。和一切的32位的Windows程序一样,SQLSERVER也是利用Windows的内存办理机制来分派、开释和通用的内存办理资本。也就是说,SQLSERVER和其他Windows程序一样经由过程WIN32API函数和操纵体系供应的内存办理资本交互。
由于几近一切的SQLSERVER内存分派都是利用假造内存(而不是堆的体例),年夜部分的内存分派的代码分化到最初都是调有Win32的VirtualAllo和VirtualFreeAPI函数。SQLSERVER经由过程挪用VirtualAllo函数来预留和提交假造内存,经由过程VirtualFree函数来开释内存。
假造内存和物理内存
在X86处置器的系列中,Windows供应一切的程序能够寻址4GB假造内存空间。所谓“假造”的意义是,这并非传统意义上的内存,它仅仅是一段没有物理存储的隐式地点段。由于只要一个程序入手下手内存分派,才入手下手利用这些地点段和物理的分派存储空间。并且,这些物理的存储空间其实不必要物理的内存(不完整),一般是磁盘空间。明白的说应当是在体系的假造页文件中。这就是为何有很多程序(每一个程序有4GB的假造内存空间)能够同时运转在只要128M的物理内存的呆板上,就像每一个程序本人分派实在的内存一样。Windows通明地把持从体系页文件拷贝和读取数据,因而程序能够在运转的呆板上分派比物理内存更多的内存空间而且各类程序能够均等的会见该呆板物理内存。
4GB的内存地点空间分为2块:用户内存空间和中心内存空间。默许每一个容量为2G,你能够经由过程WindowsNT系列操纵体系的BOOT.INI文件来改动默许空间的巨细(好比:WindowsNT,Windows2000,WindowsXP和WindowsServer2003都是WindowsNT系列的产物,Windows9x和WindowsME不是的)。
Figure1.Windowspartitionsaprocesssvirtualaddressspaceintotheusermode(application)andkernelmode(operatingsystem)partitions.
只管每个程序承受本人的假造内存空间,体系代码和设备驱动代码共享一个独自公有的假造地点空间。每一个假造内存页都和一种特别处置器形式联系关系。为了满意一切的体系页都能够被会见,处置器必需是哀求形式。这个意义是说用户的程序是没法间接会见中心内存空间,体系必需切换为中心形式,如许中心形式的内存空间才能够被会见。
程序内存空间调剂
在BOOT.INI文件中有一个/3GB的参数能够同意改动默许的限定(这个参数在Windowsadvancedserver和Windows2000DataCenter无效),如许能够经由过程就义中心内存空间(从2G下降到1G)将用户使用程序的内存空间从2G增添到3G.在Windows的用法中,这类机制叫程序内存空间调剂或叫4GT调剂(4GT).你能够经由过程在BOOT.INI文件的[operatingsystems]地区的得当的行加/3GB参数来调剂使用程序的内存空间.对一样平常的人来讲能够选择设置BOOT.INI文件的[operatingsystems]地区的得当的行增添/3GB或不加/3GB参数来启动体系.
告诫:你也能够在Windows2000Professional和Windows2000的启动文件中加/3GB的参数来启动体系,但是如许只是削减了中心内存空间到1GB但并没有增添使用程序内存空间.换句话说,如许做并没有从下降中心内存空间取得好处
正文:在WindowsXP和WindowsServer2003中供应一个新的启动参数/USERVA,能够和/3GB参数一样利用,但同意你有加倍杰出的把持度.你能够象/3GB一样将/USERVA参数到BOOT.INI文件中./USERVA参数比/3GB的上风在于,它能够同意你指定内存地点空间分派给使用程序的巨细.好比:/USERVA=2500的意义就是设置2.5G的内存地点空间预留给用户内存空间,1.5G的留给中心内存空间.出格申明/3GB参数仍是能够独自利用的.修复过程包含最多4个阶段,在下面描述。在你开始前,你应该cd到数据库目录和检查表文件的权限,确保他们可被运行mysqld的Unix用户读取(和你,因为你需要存取你正在检查的文件)。如果它拒绝你修改文件,他们也必须是可被你写入的。 |
|