我在 MySQL 中使用递归存储过程,必须将thread_stack
my.ini 中的值从 128K 更改为 512K。
我现在需要将相同的过程部署到 Oracle 和 Microsoft SQL Server。
MySQL 在 Oracle、SQLServer 中的等效配置值是什么thread_stack
?
答案1
这是我在 SQL Server 中发现的:
http://blogs.msdn.com/b/arvindsh/archive/2008/08/24/sql-worker-thread-stack-sizes.aspx
http://www.sqlskills.com/blogs/jonathan/how-much-memory-does-my-sql-server-actually-need/
综上所述,32位Windows上为512K,64位Windows上为2M。
对于 Oracle,公共文档中没有提供,但支持站点的此说明中对此进行了解释:Oracle 数据库和 Windows NT 内存体系结构,技术公告(文档 ID 46001.1)。您可以使用 ORASTACK 实用程序列出(或更改)线程堆栈大小(称为每个线程的保留内存)。堆栈的默认大小取决于版本和平台。
例如,在 64 位 Windows 上,64 位 11.2 和 12.1 版本的默认堆栈大小分别为 3.1M 和 3.5M:
11.2:
orastack X:\oracle\base\product\db11203ee\BIN\oracle.exe
Dump of file X:\oracle\base\product\db11203ee\BIN\oracle.exe
Current Reserved Memory per Thread = 3100000
Current Committed Memory per Thread = 12160
12.1:
orastack C:\oracle\base\product\db12101ee\BIN\oracle.exe
Dump of file C:\oracle\base\product\db12101ee\BIN\oracle.exe
Current Reserved Memory per Thread = 3500000
Current Committed Memory per Thread = 12160
11.2 在 32 位 Windows 上,1M:
orastack C:\oracle\product\11.2.0\dbhome_1\BIN\oracle.exe
Dump of file C:\oracle\product\11.2.0\dbhome_1\BIN\oracle.exe
Current Reserved Memory per Thread = 1048576
Current Committed Memory per Thread = 4096