数据库中identity字段不必是系统产生的唯一值 性能优化方法(新招)
2011-09-05 20:14
603 查看
但是,具有identity特性的字段,不需要具有唯一性,更不必须是主键。
可以通过,set identity_insert tablename (on|off),在运行时控制,是否可以在identity字段中指定值,而不是由系统自动的插入值。
那么,这有什么用处呢。举个例子来说,两个用户之间的聊天,可以有多次,这个用一个chatsession来表示。在数据库中,我们需要三个表: user, chatsession(sessionid identity,...), user_chatsession (userid, sessionid, ...), 来表示这个关系。这里面,多出了一个表chatsession, 其主键sessionid具有identity特性,并且在user_chatsession中被引用。
但是,我们知道,数据库写操作比读操作的开销要大很多,如果我想做优化,把chatsession整个的去掉,那应该怎么做呢.
这时,就会用到我说的这一点。首先把 user_chatsession 中的sesssionid变成identity 字段,在插入一个session中的第一个 user-session (for user a)记录时,让系统产生sessionid, 然后记录下这个sessionid, 在插入一个session中后续的 user-session (for user b, user c...), 执行set identity_insert tablename on,就可以把先前记录的sessionid值插入。
还有另外一个方法,比较笨一点,就是用 select max(sessionid) + 1 from table where userid = @useridA,来获得要新插入的sessionid, 这种方法性能上显然差了许多。
可以通过,set identity_insert tablename (on|off),在运行时控制,是否可以在identity字段中指定值,而不是由系统自动的插入值。
那么,这有什么用处呢。举个例子来说,两个用户之间的聊天,可以有多次,这个用一个chatsession来表示。在数据库中,我们需要三个表: user, chatsession(sessionid identity,...), user_chatsession (userid, sessionid, ...), 来表示这个关系。这里面,多出了一个表chatsession, 其主键sessionid具有identity特性,并且在user_chatsession中被引用。
但是,我们知道,数据库写操作比读操作的开销要大很多,如果我想做优化,把chatsession整个的去掉,那应该怎么做呢.
这时,就会用到我说的这一点。首先把 user_chatsession 中的sesssionid变成identity 字段,在插入一个session中的第一个 user-session (for user a)记录时,让系统产生sessionid, 然后记录下这个sessionid, 在插入一个session中后续的 user-session (for user b, user c...), 执行set identity_insert tablename on,就可以把先前记录的sessionid值插入。
还有另外一个方法,比较笨一点,就是用 select max(sessionid) + 1 from table where userid = @useridA,来获得要新插入的sessionid, 这种方法性能上显然差了许多。
您可能感兴趣的文章:
相关文章推荐
- 数据库中identity字段不必是系统产生的唯一值 性能优化方法(新招)
- 数据库中identity字段不必是系统产生的唯一值--性能优化方法添新招
- 《深入理解计算机系统 第3版》学习笔记——第5章 优化程序性能(程序优化方法总结)
- 数据库性能优化之冗余字段的作用
- 数据库性能优化3——Oracle SEQUENCE的概念、作用以及创建(使得并发插入主键唯一)
- 【系统性能优化】(二)数据库设计
- Linux数据库性能优化--文件系统相关优化
- Sql2005性能工具(SQL Server Profiler和数据库引擎优化顾问)使用方法详解
- 大型网站系统架构以及性能优化方法
- 从LiveJournal后台发展看 大型网站系统架构以及性能优化方法
- SQL Server 性能工具(SQL Server Profiler和数据库引擎优化顾问)使用方法详解
- 建立查询系统性能调优(3)----数据库索引优化
- MySQL 数据库性能优化方法
- Mysql 性能优化2 系统参数配置方法 和 文件系统
- 【系统性能优化】(一)数据库索引
- 【系统性能优化】(三)数据库访问优化
- 从LiveJournal后台发展看 大型网站系统架构以及性能优化方法
- Oracle数据库系统性能优化策略
- Android 系统性能优化(12)---MTK 平台UX性能分析方法
- 基于DB2的数据库应用系统的性能优化