??xml version="1.0" encoding="utf-8" standalone="yes"?>
我们知道Oracle临时表空间主要是用来做查询和存放一些缓存的数据的,盘消耗的一个主要原因是需要对查询的结果进行排序,如果没有猜错的话Q在盘I间的(内存Q的分配上,Oracle使用的是贪心法Q如果上ơ磁盘空间消耗达?GBQ那么时表I间是1GBQ如果还有增长,那么依此cLQ时表I间始终保持在一个最大的上限。像上文提到的恐怖现象经q分析可能是以下几个斚w的原因造成的?/span>
1. 没有Z时表I间讄上限Q而是允许无限增长。但是如果设|了一个上限,最后可能还是会面因ؓI间不够而出错的问题Q时表I间讄太小会媄响性能Q时表I间q大同样会媄响性能Q至于需要设|ؓ多大需要仔l的试?/span>
2.查询的时候连表查询中使用的表q多造成的。我们知道在q表查询的时候,Ҏ查询的字D和表的个数会生成一个_斯卡积Q这个_斯卡积的大就是一ơ查询需要的临时I间的大,如果查询的字D过多和数据q大Q那么就会消耗非常大的时表I间?/span>
3.Ҏ询的某些字段没有建立索引。Oracle中,如果表没有烦引,那么会将所有的数据都复制到临时表空_而如果有索引的话Q一般只是将索引的数据复制到临时表空间中?/span>
针对以上的分析,Ҏ询的语句和烦引进行了优化Q情况得到缓解,但是需要进一步测试?/span>
ȝQ?br /> 1.SQL语句是会影响到磁盘的消耗的Q不当的语句会造成盘暴涨?br /> 2.Ҏ询语句需要仔l的规划Q不要想当然的去定义一个查询语句,特别是在可以提供用户自定义查询的软g中?br /> 3.仔细规划表烦引?br />
临时表空间用注?
1.临时表空?是用于在q行排序操作(如大型查?创徏索引和联合查询期间存储时数?
每个用户都有一个时表I间
2.对于大型操作频繁,(大型查询,大型分类查询,大型l计分析{?,应指定单独的临时表空?以方便管?br />
3.分配用户单独临时表空?一般是针对 大型产品数据?OLTP数据?数据库仓?br />
对于型产品不需要单独制定时表I间,使用默认临时表空?br />原文链接Q?/span>http://blog.csdn.net/weikaifenglove/article/details/4059258
原文地址Q?a >http://hi.baidu.com/44498/blog/item/dabd37166a11bd10962b437d.html
很多朋友会问Qؓ何选择C# Q其实原因很单,因ؓ它具有其他Q何语a都不具备的生产力?/p>
软g工程的发展,主要目的也就是提高生产力Q这个核心不变,我们的学习方向也׃变?/p>
本文代码CZ支持.NET FRAMEWORK 2.0 Q?.0 Q?3.5 QLINQ{先q的解决Ҏ?/p>
一看就懂,一学就会,一目了然。。?/p>
以下所有例子,均经q测试,?kQxpQ?003QvistaQ?008QWin7下都是可以运行的。也包括X86和X64q_?/p>
声明Q本文讲解的是解x案,q不提供下蝲【主要是没有E_的网盘】,
---------------------------------------------------------
1Q?.Net Linker Q中国移动的飞信利用了它的核心。飞信是使用C#?NET上开发的。贵Q最便宜的版本要1000多美金。【傻瓜式操作Q这里不做介l?/p>
2Q用飞信的虚拟机来引D己开发的.NETE序?/p>
3Q用mono来达到脱?NET框架的效果,可以跨^台。【完支?net2.0Q以及绝大多?NET3.5Q目前已l支持WPFpd新技术了?/p>
///////////////////////实验q程/////////////////////////
例子1Q先说最单的Q用飞信虚拟机来试验吧?/p>
【不要引用VB~写的控件或者是cdQ因为飞信的虚拟机功能很?/p>
先安?飞信2008 3.5?/font>"Q然后打开安装目录Q里面有个VMDotNet文g夹,里面是.NET虚拟环境相关文g了,扑ֈ飞信安装目录下的"VMDotNet\v2.0.50727\FetionVM.exe"来启动运行我们的.NET WinFormE序Q?br />
【可以用命令行来传g可以用其他方式,都是一L】例如:
WinExec("FetionVM.exe 我的E序.exe", SW_SHOW); //C++ code
Z方便Q我们可以编写一个检?net框架版本的程序作为引导程序,如果已经安装?net框架׃用虚拟机Q如果没有安装,调用虚拟器来启动E序。【请不要使用C#或者其他托类型的语言来编写这个引导程序,否则失去了意义】?/p>
很容易吧Q但是有个弊端,你的.NETE序如果要操作类gSQL SERVER2000,2005,2008 或者是MYSQL,Oracle,DB2{数据库Q用q个飞信自带的虚拟机实现比较麻烦,所以这个飞信的虚拟机只能做单的E序应用。还有一点大家要注意Q用飞信的虚拟机,涉及到的q有版权问题。测试一下,压羃以后文g大概?Q?M左右Q还行?/p>
例子2Q用MONO来脱L架ƈ且跨q_。注Q测试结果显C,使用MONO启动.NETE序速度是最快的?/p>
首先到MONO的官方网站下载源代码或者最新版本,然后安装Q我用的?.2版本【目前已l有2.4版本了,比较斎ͼ支持的更多】?/p>
Z方便各位朋友试验Q我提供我本ơ试验的MONO版本2.2 Q?/p>下蝲地址Q?
安装完毕Q打开目录Q找C个子目录Q名字分别是binQlib Q然后复制到另外一个目录里面去【因为安装的时候默认安装在C盘的】然后把你的.net开发的E序也复制到q个目录里面去;假设q个目录名字叫做VMQ那么你的这个文件夹里应该有个最三个文Ӟ一个是bin文g夹,一个是lib文g夹,q有一个就是你写的.netE序了?/p>
然后可以用C++~写一个引导程序用来调用你?NETE序Q脓个简单的代码吧:
int main()
{
WinExec("bin\\mono.exe 你的应用E序.exe",SW_SHOWNORMAL);
return 0;
}
当然Qؓ了方便,你可以自己在逻辑里面判断一下,机器里安装的?NET的哪个版本?如果版本低了Q就调用MONO来执行,如果匚wQ就不调用MONO了?/p>
【这个例子只是支持简单的WINFORM和数据库讉KQWEBSERVICE的,在文章末?/p>
如果按照我说的一路操作,肯定是可以运行的了,但是你会发现Q现在你?NETE序是一个绿色YӞ但是他所在的目录下libQ或者是bin文g夹的大小是非常恐怖的。。。有300M以上的大,q岂不是和我们的x冲突了?当然不是Q我们来_目录吧:
在bin目录下,保留以下文gQ其他的删除卛_
然后打开lib文g夹,?.0文g夹下保留Accessibility.dllQmscorlib.dllQmscorlib.dll.mdbQ然后在GAC文g多w面保留以下文件夹【下图中的类库全部保留,最好不要删除】:
q样Q整个目录就_的差不多了,当然Q你可以Ҏ自己的需要定刉要的各种cd。然后打包即可,以我本h机器ZQ压~后的文件是9.8MQ比.NET 2.0的框架小了很多,但是比飞信的那个虚拟是大了一些;换个角度来看Q用mono不涉及版权问题,也可以调用各U数据库Q我本机试操作的是SQL SERVER 2005数据库,一切正常。让你的.NETE序也跨q_吧!只有MONO能做到这一炏V?/p>
本文原创Q抄袭的别太q分哦,最L也专业点Q别囄都不贴就发布Q?/p>
耽误别h学习Q那才是最大的犯罪。。?/p>
例子3Q?Net Linker 的一个老版本来试?/p>
通过命o行来提取.net环境的一些类库文Ӟ然后模拟Q不知道飞信用的是哪个版本,反正我这个老版本是不太好用Q要手动_目录的?/p>
但是唯一的好处就是兼Ҏ比较好Q而且不限制数据库的用。这个也涉及到版权问题,׃啰嗦了?/p>
_后的文g大小?.66MQ一般的应用都可以满了Q呵c?/p>
好了Q时间不早了Q睡觉了。欢q大家留aQ提出各U不同的见解?/p>
更新Q?009q??0?/p>
抽空拿到?Net Linker 的破解版Q用了一下还是不错的Q稳定性很好,兼容多种数据库。美中不的是有了MONO的比较,?net linker虚拟Z后,E序启动的时候速度E微慢了一点,和飞信的启动速度一栗。。不q这也没办法Q忍了?/p>
更新Q?009q??4?支持web service
今天看到一个朋友咨询MONOq_上调用webservice的问题;事实上,MONO是完全支持web service?nbsp; Q我q里也做个示例吧?/p>
新徏一个项目,winform的,版本?net2.0;然后d一个引用,引用我们准备好的web服务?/p>
引用?a >url:http://www.ayandy.com/, q个web服务的功能是天气预报那种的,包括国内?00多个主要城市。【如果图片不清晰Q可以保存到本地然后查看。?/p>
然后Q引用好了,p用吧~ 我这里例子显C的是北京当天的天气?/p>
然后q行E序Q?/p>
我的机器上有.net 3.5Q当然没问题Q但是我们要是在其他机器上呢Q?/p>
切换到虚拟机里,虚拟机是xp sp2,没有安装.NETM版本的框Ӟ
把程序复制到mono的目录中Q运行之。。?/p>
可以看到Q没有Q何问题。。。这里用的MONO版本?.2Q支持的很好?/p>
大家可以看到Q整个winformE序的按钮,字体样式都做了改变,
因ؓMONO是在LINUX上的解决ҎQ没有用微软默认的字体和样式?/p>
本文偶尔更新Q更新时间不定。感谢大家的x。。?/p>
有问题可以留a。。。下一日?a target="_blank">《用托C++【c++.net】脱?NET框架实战?/font>
2009.04.23 更新Q?/p>
关于有些朋友提出QMONO到底支持多少U数据库的问题,其实MONO支持的数据库l对比我们想象的多,几乎是很多我们都没有用过的。。。好了,我给个清单,让大家心里有数。最q上|少Q资料也没怎么查,先拿个05q的文章参考一下吧?/p>
Mono Supported Database Access- -
Mono has many ADO.NET Data Providers to get you connected.
Providers for Open Source databases:
PostgreSQL: Npgsql is fully managed provider for PostgreSQL and is actively maintained
SQL Lite: actively maintained. Requires sqlite library.
Firebird Interbase: fully managed provider for Firebird and is actively maintained.
MySQL: use the MySQL Connector/Net from MySQL AB which is fully managed and actively maintained by MySQL AB, but it is not included with Mono. There is the ByteFX.Data.MySqlClient provider which is not actively maintained, but it is included with Mono.
Providers for commercial databases:
IBM DB2 Universal Database Requires DB2 client software
ODBC requires ODBC software which is available for Unix and Windows
Oracle requires client software including Oracle Call Interface
OLE DB Requires libgda (http://www.gnome-db.org/) System.Data.OleDb is not actively maintained plus it only works on Linux with GNOME 2.x
Microsoft SQL Server fully managed provider which is actively maintained for Microsoft SQL Server 7.0/2000/2005 databases
Sybase fully managed provider for Sybase 12.x databases and is actively maintained
Older Microsoft SQL Server and Sybase databases Not actively maintained.
Alternative to ADO.NET is GdaSharp (Gnome Data Access)
Gnome Data Access (http://www.gnome-db.org/) GdaSharp is C# bindings to GDA (GNOME Data Access) and is included with GtkSharp (http://www.mono-project.com/GtkSharp), but it requires libgda be installed. Works only on Linux with GNOME 2.x installed.
External Projects that have created ADO.NET Providers that work on Mono:
MySQL Connector/Net from MySQL AB (http://dev.mysql.com/downloads/connector/net/) is the .NET and Mono data provider for MySQL
ByteFX.Data.MySqlClient (http://sourceforge.net/projects/mysqlnet/) is a MySQL Managed data provider. ByteFX.Data is no longer actively developed, but it is included with Mono. Please use the MySQL Connector/Net provider from MySQL AB instead.
NPgsql (http://gborg.postgresql.org/project/npgsql/projdisplay.php) is a fully managed provider for PostgreSQL and is included with Mono.
Firebird (http://sourceforge.net/projects/firebird/) fully managed provider for Firebird databases and is included with Mono.
Advanced Data Provider (http://advanced-ado.sourceforge.net/) ADP, is a transparent factory for ADO.NET which loads providers dynamically.
Other Projects
DB40 (http://www.mono-project.com/DB4O) Open source object database for C#
2009.05.27 更新
要注意的是,在X86下编译的E序Q如果选择ANYCPUQ那么提取后的程序可以在X64下运行?/p>
但是Q如果是~译的时候选择X64Q那无法通过LINKER提取?/p>