死磕mysql(4)
想把论坛和博客上所有关于mysql的都看一遍,死磕到底
看到关于数据库快照的东西。。。。。。。不懂,百度。。。。。。然后就跑题了,看到了表锁这种东西unlock tables;
用来锁定表。。。。。
mysql> insert into new values('haha'); ERROR 1136 (21S01): Column count doesn't match value count at row 1 mysql> desc new; +-------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+-------------+------+-----+---------+-------+ | id | int(11) | NO | PRI | NULL | | | name | varchar(20) | YES | MUL | | | +-------+-------------+------+-----+---------+-------+ 2 rows in set (0.36 sec)
mysql> insert into new values(1234,'haha'); ERROR 1099 (HY000): Table 'new' was locked with a READ lock and can't be updated
mysql> unlock tables new ; ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'new' at line 1 mysql> unlock tables ; Query OK, 0 rows affected (0.00 sec)
mysql> insert into new values(1235,'haha'); Query OK, 1 row affected (0.94 sec)
--lock tables new read;读锁,一旦锁上就不应许其他线程的写操作了。。。
--lock tables new write;xie锁,一旦锁上就不应许其他线程的读操作了。。。
网上还看到这么一句话,可是和我的测试相违背
//注意:user表必须为Myisam表,以上测试才能全部OK,如果user表为innodb表,则lock tables user read local命令可能没有效果,也就是说,如果user表为innodb表,第6时刻将不会被阻塞,这是因为INNODB表是事务型的,对于事务
表,例如InnoDB和BDB,--single-transaction是一个更好的选项,因为它不根本需要锁定表//
违背
看一下我的数据库引擎
mysql> show create table new\G;
*************************** 1. row ***************************
Table: new
Create Table: CREATE TABLE `new` (
`id` int(11) NOT NULL,
`name` varchar(20) DEFAULT '',
PRIMARY KEY (`id`),
KEY `name` (`name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
1 row in set (0.00 sec)
并没有出现异常,innodb数据库引擎也可以使用表锁
推测是数据库版本所产生的差异
mysql> select version();
+------------+
| version() |
+------------+
| 5.6.15-log |
+------------+
1 row in set (0.00 sec)
再次测试使用myisam
忘记关掉表锁了,还发现了一个问题,不光是表的问题了,而且连数据库表的创建都不被锁定了,超出我的意料。
mysql> create table new3(id int primary key , name varchar(20) default '')engine
=myisam,charset=utf8;
ERROR 1100 (HY000): Table 'new3' was not locked with LOCK TABLES
再次做出推测,不光是数据库的表的整个操作都被干扰 了,只允许read,
测试表的修改是否还可以。
mysql> alter table new1 add haha int;
ERROR 1100 (HY000): Table 'new1' was not locked with LOCK TABLES
果然如此啊,只允许read了,修改,添加,表的结构修改也被锁定了
回来测试myisam
mysql> create table new3(id int primary key , name varchar(20) default '')engine
=myisam,charset=utf8;
Query OK, 0 rows affected (0.06 sec)
添加成功,已经关闭锁了
mysql> show create table new3\G;
*************************** 1. row ***************************
Table: new3
Create Table: CREATE TABLE `new3` (
`id` int(11) NOT NULL,
`name` varchar(20) DEFAULT '',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8
1 row in set (0.00 sec)
mysql> insert into new3 values(12346,'asdf');
ERROR 1099 (HY000): Table 'new3' was locked with a READ lock and can't be update
d
无法插入
mysql> update new3 set name = '123dsfv' where id=1;
ERROR 1099 (HY000): Table 'new3' was locked with a READ lock and can't be update
d
无法更新
mysql> alter table new3 add haha int;
ERROR 1099 (HY000): Table 'new3' was locked with a READ lock and can't be update
d
无法修改表
| 1233 | name |
| 1234 | name |
+------+------+
1235 rows in set (0.00 sec)
可以查找
对照博客http://blog.chinaunix.net/uid-21505614-id-289450.html
死磕mysql(4)的更多相关文章
- 一生挚友redo log、binlog《死磕MySQL系列 二》
系列文章 原来一条select语句在MySQL是这样执行的<死磕MySQL系列 一> 一生挚友redo log.binlog<死磕MySQL系列 二> 前言 咔咔闲谈 上期根据 ...
- MySQL强人“锁”难《死磕MySQL系列 三》
系列文章 一.原来一条select语句在MySQL是这样执行的<死磕MySQL系列 一> 二.一生挚友redo log.binlog<死磕MySQL系列 二> 前言 最近数据库 ...
- S 锁与 X 锁的爱恨情仇《死磕MySQL系列 四》
系列文章 一.原来一条select语句在MySQL是这样执行的<死磕MySQL系列 一> 二.一生挚友redo log.binlog<死磕MySQL系列 二> 三.MySQL强 ...
- 如何选择普通索引和唯一索引《死磕MySQL系列 五》
系列文章 一.原来一条select语句在MySQL是这样执行的<死磕MySQL系列 一> 二.一生挚友redo log.binlog<死磕MySQL系列 二> 三.MySQL强 ...
- 五分钟,让你明白MySQL是怎么选择索引《死磕MySQL系列 六》
系列文章 二.一生挚友redo log.binlog<死磕MySQL系列 二> 三.MySQL强人"锁"难<死磕MySQL系列 三> 四.S 锁与 X 锁的 ...
- 字符串可以这样加索引,你知吗?《死磕MySQL系列 七》
系列文章 三.MySQL强人"锁"难<死磕MySQL系列 三> 四.S 锁与 X 锁的爱恨情仇<死磕MySQL系列 四> 五.如何选择普通索引和唯一索引&l ...
- 无法复现的“慢”SQL《死磕MySQL系列 八》
系列文章 四.S 锁与 X 锁的爱恨情仇<死磕MySQL系列 四> 五.如何选择普通索引和唯一索引<死磕MySQL系列 五> 六.五分钟,让你明白MySQL是怎么选择索引< ...
- 什么?还在用delete删除数据《死磕MySQL系列 九》
系列文章 五.如何选择普通索引和唯一索引<死磕MySQL系列 五> 六.五分钟,让你明白MySQL是怎么选择索引<死磕MySQL系列 六> 七.字符串可以这样加索引,你知吗?& ...
- MySQL统计总数就用count(*),别花里胡哨的《死磕MySQL系列 十》
有一个问题是这样的统计数据总数用count(*).count(主键ID).count(字段).count(1)那个效率高. 先说结论,不用那么花里胡哨遇到统计总数全部使用count(*). 但是有很多 ...
- 为什么MySQL字符串不加引号索引失效?《死磕MySQL系列 十一》
群里一个小伙伴在问为什么MySQL字符串不加单引号会导致索引失效,这个问题估计很多人都知道答案.没错,是因为MySQL内部进行了隐式转换. 本期文章就聊聊什么是隐式转换,为什么会发生隐式转换. 系列文 ...
随机推荐
- Python PyInstaller安装和使用教程
安装 PyInstalle Python 默认并不包含 PyInstaller 模块,因此需要自行安装 PyInstaller 模块. 安装 PyInstaller 模块与安装其他 Python 模块 ...
- java基础之----非空判断
大家好,第一次写博客,一直想写博客,用于自我总结,也用于帮助新同学成长. 平常我们开发的时候,用到很多非空判断,但是很多同学用到的地方不是很准确,这里,我把自己平时遇到的坑跟大家说说.我废话不多,只想 ...
- RAID阵列
• 廉价冗余磁盘阵列– Redundant Arrays of Inexpensive Disks– 通过硬件/软件技术,将多个较小/低速的磁盘整合成一个大磁盘– 阵列的价值:提升I/O效率.硬件级别 ...
- java 实现敏感词(sensitive word)工具详解使用说明
sensitive-word 平时工作中,只要涉及到用户可以自由发言(博客.文档.论坛),就要考虑内容的敏感性处理. sensitive-word 基于 DFA 算法实现的高性能敏感词工具.工具使用 ...
- spring-boot序章:打造博客系统
blog 使用spring-boot打造一个博客系统,在项目中学习! 项目功能 文章 游览 创建 编辑 删除 评论 用户 游客 注册用户 关注 被关注 后台统计 注册用户数 在线人数 文章总数 评论总 ...
- Anaconda----Python的计算环境
由于要用到opencv中的cv2这个module,我会在Anaconda这个Python的计算环境中安装加入opencv. 打开一个终端,输入: conda install opencv 显示: 选择 ...
- matlab读取excel文件中的数据
1.读取sheet1中的所有数据 1.1首先我们建立一个sheet表,表名为‘111’ 1.2 默认这些文本以及数字都放在sheet1中,我们将此excel选入当前工作目录(必要步骤), 选入当前工作 ...
- 利用 Hexo 或者 hugo 搭建个人博客
我们无法选择生活的样子,但我们可以记下来. 博客的开始 其实,一切都是为了更好的装逼.好吧,我着相了. 最开始想做一个自己博客,主要是因为看到了很多人都有,觉得自己没有太 Low 了.于是申请了 CS ...
- SpringCloud之Eureka(服务注册和服务发现基础篇)(二)
一:Eureka简介 Eureka是Spring Cloud Netflix的一个子模块,也是核心模块之一.用于云端服务发现,一个基于REST的服务,用于定位服务,以实现云端中间层服务发现和故障转移. ...
- JMeter——jmx脚本文件解析
<!--Jmeter版本信息--> <?xml version="1.0" encoding="UTF-8"?> <jmeterT ...