`
123003473
  • 浏览: 1040897 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

高并发下数据库插入重复数据

 
阅读更多
方法1:

ServiceA{
     // 根据username查询数据库中是否存在该数据
     Method isInDB(String username); 
     //保存用户
     Method saveUser() {
           boolean  flag = Method isInDB(username);
           if(!flag){
              //判断数据库中没有才 执行insert 操作
           }
     }
}

以上是我的java代码,我用loadrunner 进行压力测试,在saveuser前设置集合点,直接使用300用户并发操作,结果数据库会保存进许多重复username的记录,我自己从网上也查了许多资料有人给了我以下建议
1、保存用户逻辑采用储存过程操作,把并发压力交给数据库处理
2、数据库对username字段加上唯一约束,这样插入重复记录时 抛出异常,利用事务进行回滚
除了以上两种方法外,我想请大家给出第三种解决方案,其实这种就类似与高并发下的用户注册功能

方法2:

INSERT INTO the_table (cl1, cl2, ... , cln) SELECT cl1, cl2, ..., cln FROM (SELECT ? AS cl1, ? AS cl2, ... , ? AS cln) X WHERE NOT EXISTS ( SELECT id FROM the_table WHERE username=?)





分享到:
评论

相关推荐

    数据库高并发情况下重复值写入的避免 字段组合约束

    虽然在插入数据的时候使用了: insert inti tablename(fields….) select @t1,@t2,@t3 from tablename where not exists (select id from tablename where t1=@t1,t2=@t2,t3=@t3) 当时还是在高并发的情况下无效。...

    SQL server高并发下生成唯一订单号的存储过程

    原理:按照一定规则生成订单号后,把订单号插入数据表后,再返回给用户,由于数据表设置了主键,也就是当数据表中存在一条一样的订单号时,是无法插入到数据表中,所以即使高并发情况下,也不会出现重复订单号

    数据库原理大全(极致收藏)

    对数据库插入新数据,修改和检索原有数据均能按一种公用的和可控制的方式进行。当某个系统中存在结构上完全分开的若干个数据库时,则该系统包含一个“数据库集合”。  定义2  数据库是依照某种数据模型组织起来并...

    达梦数据库_SQL语言手册

    数据类型的实际最大长度由数据库页面大小决定,具体最 大长度算法如表 的区别在于前者长度不足时,系统自动填充空 格,而后者只占用实际的字节空间。 表 数据库页面大 实际最大长度 注:这个限制长度只针对建表的...

    数据库系统实现

    7.2.3 下推选择 7.2.4 涉及投影的定律 7.2.5 有关连接与积的定律 7.2.6 有关重复消除的定律 7.2.7 涉及分组与聚集的定律 习题 7.3 从语法分析树到逻辑查询计划 7.3.1 转换成关系代数 7.3.2 从条件...

    数据库系统概论.pdf

    数据独立性高 3. 概念模型是现实世界的第一层抽象,这一类模型中最著名的模 型是( ) A.层次模型 B.关系模型 C.网状模型 D.实体-联系模型 4. 数据的物理独立性是指( ) A.数据库与数据库管理系统相互独立 B...

    21天学会SQL

    第二篇讲解数据库管理的常用知识,包括数据库的管理、表的管理、确保数据的完整性及用户权限的设置等内容。第三篇主要讲解SQL的编程,包括T-SQL语言、存储过程及触发器。第四篇讲解与商业智能有关的内容,包括集成...

    mysql数据库my.cnf配置文件

    如果对数据一致性和完整性要求不高,完全可以设为2,如果只最求性能,例如高并发写的日志服务器,设为0来获得更高性能 innodb-buffer-pool-size = 128M innodb_log_buffer_size = 4194304 # 此参数确定些日志文件...

    Java面试系列-MySQL

    innodb是基于B+Tree索引建立的,和myisam相反它支持事务、外键,并且通过MVCC来支持高并发,索引和数据存储在一起。 说下MySQL的索引有哪些吧? 索引在什么层面? 首先,索引是在存储引擎层实现的,而不是在服务器层...

    精通sql结构化查询语句

    1.3 数据模型 1.3.1 关系数据库模型 1.3.2 数据模型的构成 1.3.3 常见的数据模型 1.4 关系型数据库 1.4.1 关系型数据库的定义 1.4.2 关系型数据库与表 1.4.3 主键与外键 1.4.4 字段约束 1.4.5 数据的完整性 1.4.6 ...

    计算机二级C语言考试题预测

    数据库系统中数据的一致性是指数据类型的一致 D. 数据库系统比文件系统能管理更多的数据 (19) 关系表中的每一横行称为一个(A) A. 元组 B. 字段 C. 属性 D. 码 (20) 数据库设计包括两个方面的设计内容,它们是(A) A....

    二级C语言公共基础知识

    (35) 数据库保护分为:安全性控制 、______、并发性控制和数据的恢复。 答:完整性控制 (36) 测试的目的是暴露错误,评价程序的可*性;而______的目的是发现错误的位置并改正错误。 答:调试 (37) 在最坏情况下,...

    C#程序开发范例宝典(第2版).part13

    实例063 将数据库数据添加到ListBox控件中 78 实例064 借助绑定控件实现数据选择录入 79 实例065 设置ListBox控件选择项 80 2.5 选择类控件应用 83 实例066 利用选择控件实现权限设置 83 实例067 利用选择控件...

    基于php上传图片重命名的6种解决方法的详细介绍

    也就是说,在数据库中非常容易获得的自增长id,无法用于给上传的图片重命名,来避免文件名称的重复,而采用从数据库中获取最大id加1的方式,增加了数据库连接的次数,不适用于高并发和数据量巨大的情况; 二,常规...

    oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 连接字符串

    Access 微软 Access是一种桌面数据库,只适合数据量少的应用,在处理少量 数据和单机访问的数据库时是很好的,效率也很高 小型企业 三、 Oracle数据库概述 ORACLE数据库系统是美国ORACLE公司(甲骨文)提供的以...

Global site tag (gtag.js) - Google Analytics