Questions tagged «orm»

4
使用ORM时,在数据库设计中需要注意哪些事项
当您知道使用对象关系映射器(ORM)维基百科访问数据库时,需要注意哪些数据库设计陷阱?另请参阅实体框架NHibernate或LLBLGenPro。 作为示例,我将注意到SqlServer的RPC调用的2100参数限制。当使用LLBLgen和使用复合主键的联接表时,这是一个问题。有关复合键,请参见MSDN文章。
19 performance  orm 

2
更新所有列(即使是未更改的列)的开销是多少?
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 2年前关闭。 在更新行时,许多ORM工具都会发出UPDATE语句来设置与该特定实体相关联的每一列。 优点是您可以轻松批处理update语句,因为UPDATE无论您更改什么实体属性,该语句都是相同的。此外,您甚至还可以使用服务器端和客户端语句缓存。 因此,如果我加载一个实体并仅设置一个属性: Post post = entityManager.find(Post.class, 1L); post.setScore(12); 所有列都将被更改: UPDATE post SET score = 12, title = 'High-Performance Java Persistence' WHERE id = 1 现在,假设我们在title属性上也有一个索引,DB难道不应该意识到该值没有改变吗? 在本文中,Markus Winand说: 所有列上的更新都显示了我们在上一节中已经观察到的相同模式:响应时间随每个其他索引的增加而增加。 我不知道为什么会产生这种开销,因为数据库将相关的数据页从磁盘加载到内存中,从而可以确定是否需要更改列值。 即使对于索引,它也不会重新平衡任何内容,因为对于未更改的列,索引值不会更改,但是它们已包含在UPDATE中。 是否也需要导航与冗余未更改列关联的B +树索引,只是为了让数据库意识到叶值仍然相同? 当然,某些ORM工具允许您仅更新已更改的属性: UPDATE post SET score = 12, WHERE id = 1 但是,当为不同的行更改不同的属性时,这种类型的UPDATE可能并不总是从批量更新或语句缓存中受益。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.