MySQL系列(五)---总结MySQL中的锁】的更多相关文章

HAVING 子句对 GROUP BY 子句设置条件的方式与 WHERE 和 SELECT 的交互方式类似.WHERE 搜索条件在进行分组操作之前应用:而HAVING 搜索条件在进行分组操作之后应用.HAVING 语法与 WHERE 语法类似,但 HAVING 可以包含聚合函数.HAVING 子句可以引用选择列表中显示的任意项. 下面的示例按产品 ID 对 SalesOrderDetail 进行了分组,并且只包含那些订单合计大于 $1,000,000 且其平均订单数量小于 3 的产品组. USE…
系列文章 一.原来一条select语句在MySQL是这样执行的<死磕MySQL系列 一> 二.一生挚友redo log.binlog<死磕MySQL系列 二> 三.MySQL强人"锁"难<死磕MySQL系列 三> 四.S 锁与 X 锁的爱恨情仇<死磕MySQL系列 四> 看过前几期文章的伙伴会发现并没有聊过关于索引和事务的知识点,这两个大点再之前的文章中已经写过了. 这里给大家一个传送门点击直接查看哈! 揭开MySQL索引神秘面纱 上来就…
MySQL数据库InnoDB存储引擎中的锁机制    http://www.uml.org.cn/sjjm/201205302.asp   00 – 基本概念 当并发事务同时访问一个资源的时候,有可能导致数据不一致.因此需要一种致机制来将访问顺序化. 锁就是其中的一种机制.我们用商场的试衣间来做一个比喻.试衣间供许多消费者使用.因此可能有多个消费者同时要试衣服.为了避免冲突,试衣间的门上装了锁.试衣服的人在里边锁住,其他人就不能从外边打开了.只有里边的人开门出来,外边的人才能进去. - 锁的基本…
第五篇 : MySQL 之 视图.触发器.存储过程.函数.事物与数据库锁 一.视图 视图是一个虚拟表(非真实存在的),其本质是‘根据SQL语句获取动态的数据集,并为其命名‘ ,用户使用时只需使用“名称”即可获取结果集,可以将该结果集当做表来使用. 使用视图我们可以把查询过程中的临时表摘出来,用视图去实现,这样以后再想操作该临时表的数据时就无需重写复杂的SQL了,直接去视图中查找即可,但视图有明显的效率问题,并且视图是存放在数据库中的,如果我们程序中使用的SQL过分依赖数据库中的视图,即强耦合,那…
近期碰到非常多锁问题.所以攻克了后,细致再去阅读了关于锁的书籍,整理例如以下:1,锁的种类 Innodb存储引擎实现了例如以下2种标准的行级锁: ? 共享锁(S lock),同意事务读取一行数据. ?  排它锁(X lock).同意事务删除或者更新一行数据. 当一个事务获取了行r的共享锁.那么另外一个事务也能够马上获取行r的共享锁,由于读取并未改变行r的数据.这样的情况就是锁兼容. 可是假设有事务想获得行r的排它锁,则它必须等待事务释放行r上的共享锁-这样的情况就是锁不兼容.二者兼容性例如以下表…
一.建立适当的索引 说起提高数据库性能,索引是最物美价廉的东西了.不用加内存,不用改程序,不用调sql,只要执行个正确的'create index',查询速度就可能提高百倍千倍,这可真有诱惑力.可是天下没有免费的午餐,查询速度的提高是以插入.更新.删除的速度为代价的,这些写操作, 增加了大量的I/O. 是不是建立一个索引就能解决所有的问题?ename上没有建立索引会怎样? select * from emp where ename='研发部'; ---测试案例命令如下 (最好以 select *…
普通文件的数据同步 nfs: 网络文件共享 samba: 共享数据 定时任务或守护进程结合 rsync.scp inotify(sersync)+rsync 触发式实时数据同步 ftp数据同步 ssh key + scp / rsync svn版本管理 rsync,sersync,inotify,union(双向同步),csync2(多向同步) mysql主从同步逻辑图 1. 单向主从同步 主-从 一主多从 2. 双向主主同步: 互为主从 (一般不采用) 3. 线性: 级联单向双主同步 4. 环…
可以从这些方面进行优化: 数据库(表)设计合理 SQL语句优化 数据库配置优化 系统层.硬件层优化 数据库设计 关系数据库三范式 1NF:字段不可分; 2NF:有主键,非主键字段依赖主键; 3NF:非主键字段不能相互依赖; 解释: 1NF:原子性 字段不可再分,否则就不是关系数据库; 2NF:唯一性 一个表只说明一个事物; 3NF:每列都与主键有直接关系,不存在传递依赖; - 不符合第一范式的例子(关系数据库中create不出这样的表): [表]字段1, 字段2(字段2.1, 字段2.2), 字…
一.开启缓存 mysql 开启查询缓存可以有两种方法来开启一种是使用set命令来进行开启,另一种是直接修改my.ini文件来直接设置都是非常的简单的哦. 开启缓存,设置缓存大小,具体实施如下: 1.修改配置文件my.ini windows下是my.ini,linux下是my.cnf; 在配置文件的最后追加上: query_cache_type query_cache_size 需要重启mysql生效: 2.命令方式 那么采用第二种方式: b) 开启缓存,两种方式: a)使用mysql命令: ;…
针对mysql语句的临时办法: 先查看下mysql的各种编码设置情况, 如果结果显示有几项的编码不一致, 请先调整linux的系统编码 mysql> show variables like 'character_set%'; 登录mysql后, 先手动设置编码, 然后才开始执行insert/update等操作 mysql> set names 'utf8'; 在.sql文件中指定编码(set names 'utf8'), 然后登入mysql, 用source或mysql命令来导入sql语句 m…
一.公平锁与非公平锁 线程所谓的公平,就是指的是线程是否按照锁的申请顺序来获取锁,如果是遵守顺序来获取,这就是个公平锁,反之为非公平锁. 非公平锁的优点在于吞吐量大,但是由于其不是遵循申请锁的顺序来获取锁,就会出现最开始申请的锁一直没有获取到,导致出现饥饿现象. java中的使用: synchronized:非公平锁 ReentrantLock:按照其构造方法来指定该锁是否是公平锁,默认是非公平锁 二.共享锁与排他锁 排他锁:该锁只能被一个线程使用: 共享锁:该锁可被多个线程所使用: java中…
使用场景 资金紧张; 并发访问不大; 门户网站; 实现 生产硬件配置: mem 32G / 双cpu 8核 / 磁盘6*600G sas 15k, 2-3个实例 安装组件 #yum install ncurses-devel -y #yum install libaio-devel -y 结束旧mysql #cd ~ #pkill mysqld #ps -ef | grep mysql #rm –f /etc/init.d/mysqld 建立多实例环境 #mkdir -p /data/{3306…
http://www.uml.org.cn/sjjm/201205302.asp 00 – 基本概念 当并发事务同时访问一个资源的时候,有可能导致数据不一致.因此需要一种致机制来将访问顺序化. 锁就是其中的一种机制.我们用商场的试衣间来做一个比喻.试衣间供许多消费者使用.因此可能有多个消费者同时要试衣服.为了避免冲突,试衣间的门上装了锁.试衣服的人在里边锁住,其他人就不能从外边打开了.只有里边的人开门出来,外边的人才能进去. - 锁的基本类型 数据库上的操作可以归纳为两中,读和写.多个事务同时读…
MySQL复制是基于主库上的二进制日志来完成,复制是异步的,可能存在延迟 MySQL日志分为: 1.服务层日志:二进制日志.通用日志.慢查日志 2.存储引擎层日志:innodb中重做日志和回滚日志 二进制日志: 记录了所有对数据库修改的事件,包括DML和DDL,但是不包含因为出错回滚的日志.二进制日志格式分类: STATMENT:SBR 基于段的格式binlog_format=STATMENT,MySQL5.7之前默认 在数据修改时执行的SQL语句,不论使用的时那种日志格式,在使用DDL语句都是…
MySQL数据表中带OR的多条件查询 OR关键字可以联合多个条件进行查询.使用OR关键字时: 条件 1) 只要符合这几个查询条件的其中一个条件,这样的记录就会被查询出来. 2) 如果不符合这些查询条件中的任何一条,这样的记录将被排除掉. 语法格式 OR关键字的基本语法格式如下: 条件表达式1 OR 条件表达式2 [...OR 条件表达式n] OR可以连接两个条件表达式,同时可以使用多个OR关键字,以连接更多的条件表达式. 实例 实例1 使用OR关键字查询employee表中d_id为1001,或…
一.mycat的安装 环境准备:准备一台虚拟机192.168.152.128 1. 下载mycat cd /softwarewget http:-linux.tar.gz 2. 解压mycat tar -zxvf Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz 3. 剪切mycat到/usr/local目录下 mv /software/mycat /usr/local 4. 启动mycat /usr/local/mycat/bin/myc…
一.创建测试表 1.创建唯一索引"b" CREATE TABLE `test2` ( `id` int(10) NOT NULL AUTO_INCREMENT, `a` varchar(5) DEFAULT NULL, `b` varchar(5) DEFAULT NULL, `c` varchar(5) DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `unique_b` (`b`) ) ENGINE=InnoDB AUTO_INCREMEN…
一. 表设计 库名.表名.字段名必须使用小写字母,“_”分割. 库名.表名.字段名必须不超过12个字符. 库名.表名.字段名见名知意,建议使用名词而不是动词. 表必须使用InnoDB存储引擎. 表必须使用“t_”开头命名. 表字符集选择UTF8. 存储精确浮点数必须使用DECIMAL替代FLOAT和DOUBLE.金额建议使用BIGINT. 建议使用UNSIGNED存储非负数值. 建议使用INT UNSIGNED存储IPV4. 整形定义中不添加长度,比如使用INT,而不是INT(4). 使用短数据…
一.背景介绍 了解一个sql语句的执行过程,了解一部分都做了什么,更有利于对sql进行优化,因为你知道它的每一个连接.where.分组.子查询是怎么运行的,都干了什么,才会知道怎么写是不合理的. 大致执行顺序: select[distinct] from join(如:left join) on where group by having union order by limit 二.数据表准备 1.创建表 DROP TABLE IF EXISTS student; CREATE TABLE `…
向MySQL发送一个请求的时候,MySQL到底做了什么 客户端发送一条查询给服务器. 服务器先检查查询缓存,如果命中了缓存,则立刻返回存储在缓存中的结果.否则进入下一阶段. 服务器端进行SQL解析.预处理,再由优化器生成对应的执行计划. MySQL根据优化器生成的执行计划,再调用存储引擎的API来执行查询. 将结果返回给客户端 一.缓存策略和相关配置 MySQL查询缓存保存查询返回的完整结构.当查询命中该缓存时,MySQL会立刻返回结果,跳过了解析.优化和执行阶段. 查询缓存系统会跟踪查询中涉及…
一.MySQL索引原理 1.索引背景 生活中随处可见索引的例子,如火车站的车次表.图书的目录等.它们的原理都是一样的,通过不断的缩小想要获得数据的范围来筛选出最终想要的结果,同时把随机的事件变成顺序的事件,也就是我们总是通过同一种查找方式来锁定数据. 数据库也是一样,但显然要复杂许多,因为不仅面临着等值查询,还有范围查询(>.<.between.in).模糊查询(like).并集查询(or)等等.数据库应该选择怎么样的方式来应对所有的问题呢?我们回想字典的例子,能不能把数据分成段,然后分段查询…
mysql的性能优化无法一蹴而就,必须一步一步慢慢来,从各个方面进行优化,最终性能就会有大的提升. 一.介绍 对mysql优化是一个综合性的技术,主要包括 表的设计合理化(符合3NF) 添加适当索引(index) [四种: 普通索引.主键索引.唯一索引unique.全文索引] 分表技术(水平分割.垂直分割) 读写[写: update/delete/add]分离 存储过程 [模块化编程,可以提高速度] 对mysql配置优化 [配置最大并发数my.ini, 调整缓存大小 ] mysql服务器硬件升级…
一.创建用户和授权 下面的操作中,其中someusername为用户名,somepassword为密码,somedbname为数据库名 1.创建用户 create user 'someusername' identified by 'somepassword'; 2.授权 GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,ALTER ON somedbname.* TO 'someusername'; 或者 grant all privileges on…
mysqlbinlog 是什么? 数据目录下的如下文件: mysql-bin.xxxxxx 作用? 记录数据库内部增删改查对mysql数据库有更新的内容的记录 三种模式? statement level 模式: 缺点是不够细致 row level 模式: 日志会记录每一行数据被修改的形式 (一下子修改多行其实就一条语句, 但是它会记录成多行) 优点: 记录每一行的细节, 可以记录function/trigger/存储过程 mixed level 模式: 混合模式, 自动判断该使用statemen…
准备 下载如下linux安装包 jdk-6u31-linux-x64-rpm.bin amoeba-mysql-binary-2.2.0.tar.gz # crontab -e  //同步时间 */ * * * * /usr/sbin/ntpdate 172.16.0.1 &>/dev/null # service iptables stop  //这几台服务器都要关闭防火墙 配置主从复制架构: 多主机 (ip和名称定义) 192.168.1.25  master 192.168.1.30 …
非关系型(NOSQL)数据库 键值存储数据库: memcached  /  redis  /  memcachedb  /  Berkeley db 列存储数据库: Cassandra  /  Hbase  (大公司才会用) 面向文档数据库: mongodb  /  couchdb 图形数据库: neo4j  /  infogrid  (用的少) 数据库种类 层次式数据库 网络式数据库 关系型数据库: 把复杂的数据结构归结为简单的二元关系, 对数据的操作全部建立在一个或多个关系表格上 而当今互联…
备份数据: mysqldump #mysqldump -uroot -p123456 test > /test_bak.sql #egrep -v "#|\*|--|^$" /test_bak.sql 指定对应字符集 #mysqldump -uroot -p123456 --default-character-set=utf8 test > /test_bak.sql 加 -B 参数: 备份多个库 (增加创建数据库和连接数据库的命令) #mysqldump -uroot -…
一.Lock接口的几个功能: 显示的获取和释放锁 尝试非阻塞的获取锁 能被中断的获取锁 超时获取锁 使用方式: Lock lock = new ReentrantLock(); lock.lock(); try { } finally { lock.unlock(); } Lock的API 二.AQS 定义:用来构建锁或者其他同步组件的基础框架,它使用了一个int成员变量表示同步状态,通过内置的FIFO队列来完成资源获取线程的排队工作.是实现锁的关键. 同步器的设计是基于模板方法模式的,也就是说…
由于等待一个锁定线程只有在获得这把锁之后,才能恢复运行,所以让持有锁的线程在不需要锁的时候及时释放锁是很重要的.在以下情况下,持有锁的线程会释放锁:    1. 执行完同步代码块.    2. 在执行同步代码块的过程中,遇到异常而导致线程终止.    3. 在执行同步代码块的过程中,执行了锁所属对象的wait()方法,这个线程会释放锁,进行对象的等待池.    除了以上情况外,只要持有锁的此案吃还没有执行完同步代码块,就不会释放锁.因此在以下情况下,线程不会释放锁:    1. 在执行同步代码块…
一.MySQL四舍五入函数ROUND(x) ROUND(x)函数返回最接近于参数x的整数,对x值进行四舍五入. 实例: 使用ROUND(x)函数对操作数进行四舍五入操作.SQL语句如下: mysql>SELECT ROUND(-2.34),ROUND(-4.56),ROUND(2.34),ROUND(4.56) 进行四舍五入处理以后,只保留了各个值的整数部分. 二.MySQL四舍五入函数ROUND(x,y) ROUND(x,y)函数返回最接近于参数x的数,其值保留到小数点后面y位,若y为负值,则…