文章 2022-02-16 来自:开发者社区

并发事务下各数据库外部表现实测之一(SQL Server篇)

当同时有多个事务访问相同数据时,DBMS会采取锁或MVCC的机制确保数据的完整性。反映到应用程序上的表现可能就是等待或报错。不同DBMS因为采取的机制或策略不同,其外部表现也有很大差异。于是笔者决定通过测试一探究竟。先以SQL Server作为对象进行测试。 一、 背景知识 对并发事务的数据完整性保护的强弱可通过隔离级别控制,如果过强会影响并发性能,过弱可能不满足应用的需要。SQL 标准...

文章 2022-02-16 来自:开发者社区

并发事务下各数据库外部表现实测之三(PostgreSQL篇)

PostgreSQL的事务也是基于MVCC实现的。支持3种隔离级别,读已提交,可重复读和可串行化。但用户设置读未提交并不会报错而是被映射到读已提交,这是不违反SQL规约的。PostgreSQL的可重复读相当于Oracle的可串行化,即SI。而PostgreSQL的可串行化则是真正的可串行化即Serializable Snapshot Isolation (SSI),这一特性是从9.1开始加进来的....

文章 2022-02-16 来自:开发者社区

并发事务下各数据库外部表现实测之二(Oracle篇)

Oracle采用MVCC技术进行事务隔离,它只支持2种隔离级别,读已提交和可串行化,设置其他隔离级别会报错。这种基于MVCC的可串行化也被称为SNAPSHOT ISOLATION(SI)。就像SNAPSHOT的字面意思一样,MVCC像是给每个事务保留一个快照,对于数据的读取可以不受其他事务的影响。读已提交和可串行化的区别在于SNAPSHOT采取的时点,前者在SQL执行时,后者在事务开始时。下面参....

文章 2022-02-16 来自:开发者社区

并发事务下各数据库外部表现实测之六(总结篇)

根据并发事务的实现方式和外部表现,可以归纳出下面几种事务处理模式(近似的)。1)读未提交读不加锁,写加排他锁。写锁在事务结束时释放。读写不冲突,但可能出现脏读。2)读已提交(基于锁)读加共享锁,写加排他锁。读锁在读SQL执行后立即释放,写锁在事务结束时释放。读写冲突,不会出现脏读,但可能出现不可重复读。3)可重复读(基于锁)读加共享锁,写加排他锁。读锁和写锁都在事务结束时释放。读写冲突。不会出现....

文章 2022-02-16 来自:开发者社区

并发事务下各数据库外部表现实测之四(MySQL篇)

MySQL的Innodb也采用了MVCC机制提高并发事务的性能,但在可串行化隔离级别下,测试发现它是完全基于锁的。下面是详细测试结果。测试方法方法请参考笔者之前的文章:并发事务下各数据库外部表现实测之一(SQL Server篇)http://blog.chinaunix.net/uid-20726500-id-3883105.html1. 测试环境OS:Windows7DBMS:MySQL 5.....

文章 2022-02-16 来自:开发者社区

ASP.NET 生成唯一不重复的订单号 支持多用户并发、持多数据库的实现参考

ASP.NET 生成唯一不重复的订单号 支持多用户并发、持多数据库的实现参考(C#.NET通用权限管理系统组件源码组成部分) 我们在日常开发项目过程中往往需要各种订单单号的产生方法,而且是支持多用户并发、支持多种数据库的,我们并不想为每个项目都写一些独立的代码去实现这些功能,往往需要有个通用的函数比较爽一些。  下面我们以C#.NET通用权限管理系统组件源码的做法,给大家来一个参考,下面...

文章 2022-02-16 来自:开发者社区

再送一波干货,测试2000线程并发下同时查询1000万条数据库表及索引优化

原文:再送一波干货,测试2000线程并发下同时查询1000万条数据库表及索引优化 继上篇文章《绝对干货,教你4分钟插入1000万条数据到mysql数据库表,快快进来》发布后在博客园首页展示得到了挺多的阅读量,我这篇文章就是对上篇文章的千万级数据库表在高并发访问下如何进行测试访问 这篇文章的知识点如下: 1.如何自写几十行代码就能模拟测试高并发下访问千万级数据库表 2.比较高并发下(200次/秒,....

文章 2022-02-16 来自:开发者社区

如何实现高容量大并发数据库服务 | 数据库分布式架构设计

袋鼠学院和优云、阿里云联合举办的沙龙结束之后,总是有小伙伴们来问PPT内容,想要进一步了解Topic内容。(哦,对了对了,竟然还有小伙伴专门冲着袋鼠云去听沙龙,感动cry~~) 千呼万唤,忙成狗的袋鼠小妹终于把沙龙总结整理了出来(⊙o⊙) 本次沙龙的主题是“云时代下的运维管理实践”,受邀请的演讲嘉宾,花名宏翊(经常关注袋鼠云的同学,肯定已经对这个名字很熟悉了),是袋鼠云首席数据库架构师,袋鼠...

文章 2022-02-15 来自:开发者社区

#运维侠客行·杭州站# 如何实现高容量大并发数据库服务

运维侠客行杭州站·讲师 宏翊,袋鼠云首席架构师,袋鼠学院数据库讲师。 在2017运维侠客行·杭州站上,主办方优云软件特意邀请了来自袋鼠云的首席数据库架构师宏翊给大家带来了如何实现高容量大并发数据库服务。为什么数据库需要做分布式架构设计?在对数据库进行拆分设计和实施时,会遇到哪些坑?又该如何避免踩坑?一起来了解下吧。 ▍摘要 数据库拆分要根据业务现状、模式,选择合适的拆分方式,紧密结合业务及应...

问答 2022-02-15 来自:开发者社区

多线程并发时,数据库无法访问。数据库连接没有正确关闭??报错

现有如下的项目。。 在多线程测试的时候,提示 【基础提供程序在 Open 上失败。】 CRUD那一层,通过该类的静态方法创建一个对象,执行对应的数据库操作方法 一个数据库操作还没有完成的时候,又创建了个对象,然后上一个还没有关闭数据库连接,于是报错了。 现在有一个解决方案,是在创建对象的那个静态方法里加一个lock,保证同一时刻只有一个操作。...

本页面内关键词为智能算法引擎基于机器学习所生成,如有任何问题,可在页面下方点击"联系我们"与我们沟通。

产品推荐

AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等