我正在阅读blog-post of Ben Scheirman关于他为提高性能所做的一些NHibernate调整。
在文章的最后有:
第7课:始终确保已设置hibernate.default_schema
hibernate.default_schema
是什么意思?
答案 0 :(得分:7)
我不是dba所以我不能给你一个很好的模式定义......(对我而言,它只是SQL Server中的'数据库')。
在NHibernate中,您可以指定两个位置的模式:在映射文件中,在配置中。
映射文件允许您指定每个类的模式。当您在同一服务器中有来自不同模式的类时,这很好。
SessionFactory配置允许您指定应应用于未显式设置其架构的所有类映射的默认架构(default_schema选项)。所以它是一个全部。
从阅读链接看起来这对性能有好处,因为当您查询表“Bar”而未指定架构(比如数据库是“Foo”,因此SQL Server中的架构“Foo.dbo”)时查询计划不是缓存。这可能是由于SQL Server必须尝试解析连接字符串(初始目录,数据库等)使用哪个架构,而不是在查询中明确它(“Bar”隐式 - 不缓存,“Foo.dbo .Bar“显式 - 缓存”。
同样,我不是dba所以这些定义很糟糕:)
编辑:
以下是配置资料的链接(适用于NH 1.2 ...已经过时了......但是default_schema选项就在那里):
https://www.hibernate.org/hib_docs/nhibernate/1.2/reference/en/html/session-configuration.html