`
ycljf86
  • 浏览: 77436 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

改DB的结构(由非自动增长改为自动增长)

阅读更多
hibernate 的自动生成主键策略,increment,这个是严重不建议在集群环境下使用的。他是直接用在程序中max函数来生成,这里有两台web server,那么就容易出现插入相同值的问题,更要命的是,我们的项目中也用到了hinernate的二级缓存和查询缓存,那么serverA更新了数据库后,是不会通知serverB的,由于缓存那么serverB不是从数据库中select max的,而是直接从缓存中取出最近一次他自己认为是最新的那条然后加1.那么肯定会出现主键相同的情况了。无论你是不是一起点save按钮,解决的方案:

1 每次save时清空二级缓存的这个类。当然这样要是并发起来,一样是有可能出现问题的。他只是保证每次都到数据库中捞新的记录(sessionFactory.evit(class))
2 写SQL改表的结构。自增长。对应的hbm.xml改为native。下面就是项目中改表的SQl。改表的思路是这样的:
删除外键-->删除主键和约束-->创建临时表(结构和原表一样,主键设为自增长)-->赋值原表内容到临时表-->删除原表-->改临时表的名字为原表-->添加主键和约束-->添加外键。

这里要最后记住主键。外键。约束的名字。
以上都是用sql完成的。没有人工干预。

下面附上一段完整的sql代码:
分享到:
评论

相关推荐

    DB2数据库用户手册

    - **创建含identity值(即自动生成的ID)的表**:创建包含自增长ID字段的表时,可以使用`IDENTITY`关键字来指定该字段自动递增。 - **预防字段空值的处理**:为了避免空值问题,可以使用`COALESCE`函数或在创建表时为...

    开源项目-cockroachdb-cockroach.zip

    该项目的最新版本v1.2引入了对JSON操作的支持,这极大地增强了其处理非结构化数据的能力。 ### JSON支持 在v1.2中,CockroachDB添加了对JSON数据类型的处理,使得用户可以存储、查询和更新JSON格式的数据。JSON...

    DB2 日常维护指南,第 3 部分

    随着数据量的增长,表的物理结构可能会变得碎片化,导致数据库性能下降。通过reorg命令可以整理数据并优化表的存储结构,以提高查询效率。定期执行reorg可以避免数据碎片化问题,从而维持数据库性能。 总的来说,...

    DB2存储过程表空间sql专题

    创建表空间使用CREATE TABLESPACE语句,并可以指定初始大小、自动增长策略等参数。当创建表或索引时,可以指定它们所在的表空间,以便于管理和优化存储资源。例如,经常访问的表可以放在高速存储的表空间,而历史...

    DB2手册pdf

    在DB2中创建包含自动增长ID的表,可以使用`IDENTITY`关键字: ```sql CREATE TABLE my_table ( id INT GENERATED BY DEFAULT AS IDENTITY, name VARCHAR(50) ); ``` #### 预防字段空值的处理 为了防止空值,可以...

    DB2 for zOS DB2 数据库设计取得最佳性能的准则

    **DB2 V8的新特性**:虽然本文以DB2 for z/OS V7为基础,但V8引入的新功能如压缩、自动调优和内存管理等,可能对性能产生重大影响。适时评估这些新特性对设计决策的适应性。 最后,尽管IBM文档提供了详细的技术信息...

    db2常用语句

    - 序列在自动生成唯一编号或自动增长字段时非常有用,提高了数据完整性。 - **查看索引详情**:`DESCRIBE INDEXES FOR TABLE table_name SHOW DETAIL` - 了解表上的索引结构及其属性,对于优化查询性能至关重要。...

    Db10g SQL Tuning Vol-I

    随着数据量的增长,如何确保数据库能够快速响应各种查询请求变得尤为重要。SQL Tuning 可以帮助组织解决以下问题: 1. **提升查询性能**:通过优化 SQL 语句结构,减少不必要的数据读取,从而加快查询速度。 2. **...

    DB2游标及动态SQL

    `EXCLUDING IDENTITY COLUMN ATTRIBUTES`指明排除自动增长的ID列;`ON COMMIT DELETE ROWS`指明提交事务后删除所有行;`NOT LOGGED IN temp_table_space`指明表的变化不被记录;`with replace`指明如果存在同名的...

    基于PLC的烘焙食品包装自动化生产线控制系统设计.pdf

    在现代烘焙食品生产行业中,随着市场需求的增长和对效率及成本控制的严格要求,自动化和智能化的生产线控制系统成为了企业竞争力提升的关键。本文介绍了一个基于可编程逻辑控制器(PLC)的烘焙食品包装自动化生产线...

    DB2基础----表空间

    这条命令创建了一个名为`mytablespace`的表空间,使用自动存储管理,初始分配1000个数据页,并关联到名为`bp1`的缓冲池。 四、表空间管理 表空间管理包括监控、调整和优化。监控表空间的使用情况,确保有足够的空间...

    ibm数据库管理资料db2资源锁管理

    随着数据量和用户数量的增长,锁管理已经成为了一个由数据库系统自动处理的服务,而不再是程序员手动控制的过程。 #### 二、锁的工作原理 DB2数据库支持多种类型的锁,包括表空间锁、表锁、页锁和行锁等不同级别的...

    DB2使用经验积累

    - **创建含identity值(即自动生成的ID)的表**:使用`IDENTITY`关键字创建自增长的主键列。 - **预防字段空值的处理**:通过使用`NOT NULL`约束来防止字段为空,或者在插入数据时进行检查。 - **取得处理的记录数**...

    DB1-西工大数据库实验一数据库及表的创建和管理.docx

    数据库的初始大小为 10MB,最大为 50MB,数据库自动增长,增长方式是按 5% 比例增长。日志文件初始为 2MB,最大可增长到 5MB,按 1MB 增长。 备份数据库 在实验中,我们使用了两种备份数据库的方法:第一种方法是...

Global site tag (gtag.js) - Google Analytics