堆栈

数据库服务器将在共享内存的虚拟部分中分配一个区域以便为线程所执行的函数存储非共享数据。此区域称为堆栈。有关如何设置堆栈大小的信息,请参阅堆栈

堆栈使虚拟处理器能够保护线程中非共享数据免遭并发执行相同代码的其他线程的覆盖。例如,如果几台客户机应用程序并发地执行 SELECT 语句,那么每台客户机的会话线程将在代码中执行许多同样的函数。如果线程没有专用堆栈,那么一个线程可能会覆盖属于函数中另一个线程的本地数据。

当虚拟处理器切换到新的线程时,它会为该线程从线程控制块中装入堆栈指针。堆栈指针将存储堆栈的开始地址。 然后,虚拟处理器可以将偏移量指定到在堆栈中存取数据的开始地址。该图说明了虚拟处理器如何使用堆栈来为会话线程分离非共享数据。

图: 虚拟处理器为每个用户分离非共享数据


在该图之前的段描述了该图的内容。