`
OuYangGod
  • 浏览: 52896 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论
文章列表
《将博客搬至CSDN》
前面两篇文章讨论了MySQL InnoDB的锁类型与加锁方式,这次,我们来看看在不同的场景下,不同的SQL会以什么样的方式加什么类型的锁。   在开始之前,我们先了解一下什么是聚族索引?   每一张InnoDB表都有且仅有一表特殊的索引,聚族索引(Clustered Index),表中的数据是直接存放在聚族索引的叶子节点页面中,这样,根据聚族索引查询就会比普通索引更快,因为少了一次IO操作。通常,聚族索引就是表的主键;如果表没有主键,那InnoDB会把第一个非空的唯一索引当作聚族索引;如果表既无主键,又无非空的唯一索引,那么InnoDB会创建一个隐藏的索引。表中的其它全部索引,都叫做 ...
上一篇文章我们提到MySQL InnoDB对数据行的锁定类型一共有四种:共享锁(读锁,S锁)、排他锁(写锁,X锁)、意向共享锁(IS锁)和意向排他锁(IX锁),今天我们要讨论的是MySQL InnoDB对数据行的锁定方式。   MySQL InnoDB支持三种行锁定方式: 行锁(Record Lock):锁直接加在索引记录上面。 间隙锁(Gap Lock):锁加在不存在的空闲空间,可以是两个索引记录之间,也可能是第一个索引记录之前或最后一个索引之后的空间。 Next-Key Lock:行锁与间隙锁组合起来用就叫做Next-Key Lock。 默认情况下,InnoDB工作 ...
以前在学习《数据库概论》这门课程的时候,了解到在可重复读这个隔离级别下,一个事务内同一个SELECT查询的多次执行会返回相同的结果,而这个是对查询返回的记录加共享锁来实现的。这样,别的事务如果要更新相同的记 ...
MySQL InnoDB一共有四种锁:共享锁(读锁,S锁)、排他锁(写锁,X锁)、意向共享锁(IS锁)和意向排他锁(IX锁)。其中共享锁与排他锁属于行级锁,另外两个意向锁属于表级锁。   共享锁(读锁,S锁):若事务T对数据对象A加上S锁,则事务T可以读A但不能修改A,其他事务只能再对A加S锁,而不能加X锁,直到T释放S锁。 排他锁(写锁,X锁):若事务T对数据对象A加上X锁,则只允许T读取和修改A,其他事务不能再对A加作何类型的锁,直到T释放A上的X锁。 意向共享锁(IS锁):事务T在对表中数据对象加S锁前,首先需要对该表加IS(或更强的IX)锁。 意向排他锁(IX锁):事务T ...
上篇文章讨论了事务隔离级别,隔离级别这个东西在不同的数据库产品上,是有一些区别的,本篇重点讲讲mysql数据库。 四种标准的隔离级别MySQL数据库都支持,下面我们一个一个看过来先。 首先我们先创建一个简单的测试表。 CREATE TABLE tb1( id INT NOT NULL, value DECIMAL NOT NULL, PRIMARY KEY (id) )ENGINE=INNODB; Read Uncommitted读未提交 首先,会话S1查询tb1表,没有记录返回。 mysql> set session transa ...
最近工作非常郁闷,天天被领导盯着。主要是系统近来死锁发生在频率很高。最终,经过大家的共同努力,我们成功的定位并解决了问题,所以把过程中学习的知识与经验分享一下 问题背景 系统中有一个账户模块,负责管理和 ...
一般纳税人公司与小规模公司的不同   1、一般纳税人容易和一般纳税人作生意,通常大公司都是一般纳税人,因此生意容易做大。  2、一般纳税人的财务、税务、管理要求规范,财务人员要求高,可以减少经营风险、涉税风 ...
Mysql 账户管理 1、创建账户 CREATE USER 'jeffrey'@'localhost' IDENTIFIED BY 'my pass'; 2、删除账户(删除账户同时会删除其所有权限) DROP USER 'jeffrey'@'localhost'; 3、分配权限 GRANT ALL PRIVILEGES ON *.* TO 'jeffrey'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION 4、回收权限 REVOKE INSERT ON *.* FROM 'jeffrey'@'localhost'; REVOKE ALL PRIVI ...
1. Create SVN server svnadmin create path svn import project file:///path 2. Make SVN server accessible via http File: httpd.conf LoadModule dav_svn_module libexec/apache2/mod_dav_svn.so LoadModule authz_svn_module libexec/apache2/mod_authz_svn.so LoadModule autoindex_module libexec/apache2/mod_au ...
最近在看关于OSGi方面的内容,自己做了些简单的例子。虽然在log方面OSGi有提供一些实现,但我们javaer们早已习惯了log4j,于是很想试试看log4j在OSGi上能不能用。 在网上搜了下,相关的资料不多也不少,但都不是很详细,所以记下来,方便大家参考一下。 例子用到了: apache的felix(版本4.0.2) springDM(版本1.2.1)中的log4j的jar包。 首先,实现一个bundle类: public class Activator implements BundleActivator { private static final Logger l ...
  消息摘要是数据信息的数字指纹。通过某种安全散列算法(如SHA1)对数据信息进行加密,就可以生成一个20字节(MD5算法好像是16字节)的序列,这个序列就称为消息摘要。   从安全的角度考虑,我们总是希望任何不同的数据信息都生成不同的消息摘要,但这是不可能的,就拿SHA1算法来说,消息摘要是一个20字节的序列,也就是160位的长度,一共也只有2的160次方种可能。但这已经是一个巨大的数字了,我们可以相信两个不同的数据信息总是生成不同的消息摘要。   所以,消息摘要具有以下两个特点: 如果数据信息改变了,那么消息也将根着改变; 伪造者无法创建与原数据信息具有相同消息摘要的假数据信息。   ...
死锁 1、何为死锁   简单说来,死锁就是系统中的线程因相互等侍彼此占有的资源而暂停执行,造成系统假死的现象。 2、死锁是如何发生的   假设系统有两个互斥资源A和B,系统中的两个线程1和2都要获得A和B之后才能正常工作, 但是线程1先取资源A再取资源B,线程2先取资源B再取资源A。这样就有可能发生这样的情况:线程1先申请了资源A,再准备申请资源B的时候,由于处理器调度,线程2开始执行;线程2申请了资源B,在准备取资源A的时候发现资源A已经被别的线程(1)占用了,这样线程2暂停执行;当线程1接着执行时,发现资源B已经被别的线程(2)占用了。就这样,线程1和2相互等待彼此占有的资源而一直停止下去 ...
线程同步 1、什么是线程同步   概念上的东西在这里就不过多介绍了,线程同步,也叫做线程间通信,就是多个线程共同协作完成一件事情。   为了完成一件事情,可能需要分很多的部分或步骤,每个部分由一个或一类线程来负责,而各个部分的处理又有先后顺序,这就对相互协作的线程有了一定的约束,也就是进程同步。 2、Java中如何实现线程同步   在Java中,线程的同步涉及到synchronized和三个方法wait()、notify()和notifyAll()。   synchronized在上篇中已经讲过了,这里就不再重复了。   wait()方法与Thread类的sleep()和yield()方 ...
  今天,已经上线的项目,客户忽然那边报出一个bug来。      bug描述如下:   在PC1下以user1登录系统,接着以user2在PC2登录系统,之后user1的部分菜单变成了user2的菜单。   当时觉得这个bug很不可思议,因为系统是一个项目组的子项目,是一个web程序,菜单都是在用户登录系统的时候写进session里面的,在不同的PC上登录怎么会相互影响呢?查了很久还没找出原因。   后来想起不久前对系统做过一次压力测试,为了提高登录时的效率,对取菜单这部分做过优化。开始时系统的菜单是采用层次的方法划分的,也就是一级菜单、二级菜单,角色的分配是直接指定二级菜单,所以每次在登 ...
Global site tag (gtag.js) - Google Analytics