1 row in set (0.00 sec)
表payment的记录数:
(product)root@localhost [sakila]> select count(*) from payment;
Connection id:    24
Current database: sakila
+----------+
| count(*) |
+----------+
|    16049 |
+----------+
1 row in set (0.00 sec)
事务隔离级别:
(product)root@localhost [(none)]> show variables like '%isolation%';
+---------------+----------------+
| Variable_name | Value          |
+---------------+----------------+
| tx_isolation  | READ-COMMITTED |
+---------------+----------------+
1 row in set (0.00 sec)
测试在payment_date字段利用ALGORITHM=COPY,LOCK=EXCLUSIVE方式建立索引所需时间,并监控表是否有加锁?
1.会话1先执行每秒监控查询表payment是否有锁,并记录到txt文件
#!/bin/bash
while : ;do
date>>/data/mysql/mysql3376/lock.txt &&
mysql -uroot -psafe_2016 -S /tmp/mysql3376.sock -e "show open tables from sakila where In_use>0">>/data/mysql/mysql3376/lock.txt
sleep 1
2.会话2执行建索引脚本
(product)root@localhost [(none)]> alter table sakila.payment add index payment_date_ix1 (payment_date),ALGORITHM=COPY,LOCK=EXCLUSIVE;
Query OK, 16049 rows affected (1.08 sec)
Records: 16049  Duplicates: 0  Warnings: 0
3.查看lock.txt
cat lock.txt
Sun Apr 17 20:11:17 HKT 2016
Database        Table   In_use  Name_locked
sakila  payment 1       0
4.drop索引,并重启mysql,以清空buffer pool缓存数据
alter table sakila.payment drop index payment_date_ix1;
并重启mysql。
小结:监控到表sakila.payment add index在执行建索引过程中有锁表,且建索引时间为1.08秒。
测试在payment_date字段利用ALGORITHM=COPY,LOCK=SHARED方式建立索引所需时间,并监控表是否有加锁?
1.会话1先执行每秒监控查询表payment是否有锁,并记录到txt文件
#!/bin/bash
while : ;do
date>>/data/mysql/mysql3376/lock.txt &&
mysql -uroot -psafe_2016 -S /tmp/mysql3376.sock -e "show open tables from sakila where In_use>0">>/data/mysql/mysql3376/lock.txt
sleep 1
2.会话2执行建索引脚本
(product)root@localhost [(none)]> alter table sakila.payment add index payment_date_ix1 (payment_date),ALGORITHM=COPY,LOCK=SHARED;
Query OK, 16049 rows affected (1.57 sec)
Records: 16049  Duplicates: 0  Warnings: 0
3.查看lock.txt
cat lock.txt
Sun Apr 17 20:19:40 HKT 2016
Database        Table   In_use  Name_locked
sakila  payment 1       0
4.drop索引,并重启mysql,以清空buffer pool缓存数据
alter table sakila.payment drop index payment_date_ix1;
小结:监控到表sakila.payment add index在执行建索引过程中有锁表,且建索引时间为1.08秒。
测试在payment_date字段利用ALGORITHM=COPY,LOCK=NONE方式建立索引所需时间,并监控表是否有加锁?
1.会话1先执行每秒监控查询表payment是否有锁,并记录到txt文件
#!/bin/bash
while : ;do
date>>/data/mysql/mysql3376/lock.txt &&
mysql -uroot -psafe_2016 -S /tmp/mysql3376.sock -e "show open tables from sakila where In_use>0">>/data/mysql/mysql3376/lock.txt
sleep 1
2.会话2执行建索引脚本
(product)root@localhost [(none)]> alter table sakila.payment add index payment_date_ix1 (payment_date),ALGORITHM=COPY,LOCK=NONE;
ERROR 1846 (0A000): LOCK=NONE is not supported. Reason: COPY algorithm requires a lock. Try LOCK=SHARED.
小结:ALGORITHM=COPY,LOCK=NONE两个参数不能同时组合使用,copy方式必需要加锁。
测试在payment_date字段利用ALGORITHM=INPLACE,LOCK=EXCLUSIVE方式建立索引所需时间,并监控表是否有加锁?
1.会话1先执行每秒监控查询表payment是否有锁,并记录到txt文件
#!/bin/bash
while : ;do
date>>/data/mysql/mysql3376/lock.txt &&
mysql -uroot -psafe_2016 -S /tmp/mysql3376.sock -e "show open tables from sakila where In_use>0">>/data/mysql/mysql3376/lock.txt
sleep 1
2.会话2执行建索引脚本
(product)root@localhost [(none)]> alter table sakila.payment add index payment_date_ix1 (payment_date),ALGORITHM=INPLACE,LOCK=EXCLUSIVE;
Query OK, 0 rows affected (0.32 sec)
Records: 0  Duplicates: 0  Warnings: 0
3.查看lock.txt
cat lock.txt
Sun Apr 17 20:29:26 HKT 2016
Sun Apr 17 20:29:27 HKT 2016
Sun Apr 17 20:29:28 HKT 2016
4.drop索引,并重启mysql,以清空buffer pool缓存数据
alter table sakila.payment drop index payment_date_ix1;
小结:监控到表sakila.payment add index在执行建索引过程中无锁表,且建索引时间为0.32秒。
测试在payment_date字段利用ALGORITHM=INPLACE,LOCK=SHARED方式建立索引所需时间,并监控表是否有加锁?
alter table sakila.payment add index payment_date_ix1 (payment_date),ALGORITHM=INPLACE,LOCK=SHARED;
1.会话1先执行每秒监控查询表payment是否有锁,并记录到txt文件
#!/bin/bash
while : ;do
date>>/data/mysql/mysql3376/lock.txt &&
mysql -uroot -psafe_2016 -S /tmp/mysql3376.sock -e "show open tables from sakila where In_use>0">>/data/mysql/mysql3376/lock.txt
sleep 1
2.会话2执行建索引脚本
(product)root@localhost [(none)]> alter table sakila.payment add index payment_date_ix1 (payment_date),ALGORITHM=INPLACE,LOCK=SHARED;
Query OK, 0 rows affected (0.23 sec)
Records: 0  Duplicates: 0  Warnings: 0
3.查看lock.txt
cat lock.txt
Sun Apr 17 20:37:07 HKT 2016
Sun Apr 17 20:37:08 HKT 2016
Sun Apr 17 20:37:09 HKT 2016
4.drop索引,并重启mysql,以清空buffer pool缓存数据
alter table sakila.payment drop index payment_date_ix1;
小结:监控到表sakila.payment add index在执行建索引过程中无锁表,且建索引时间为0.23秒。
测试在payment_date字段利用ALGORITHM=INPLACE,LOCK=NONE方式建立索引所需时间和是否锁住表上dml操作?
1.会话1先执行每秒监控查询表payment是否有锁,并记录到txt文件
#!/bin/bash
while : ;do
date>>/data/mysql/mysql3376/lock.txt &&
mysql -uroot -psafe_2016 -S /tmp/mysql3376.sock -e "show open tables from sakila where In_use>0">>/data/mysql/mysql3376/lock.txt
sleep 1
2.会话2执行建索引脚本
(product)root@localhost [(none)]> alter table sakila.payment add index payment_date_ix1 (payment_date),ALGORITHM=INPLACE,LOCK=NONE;
Query OK, 0 rows affected (0.17 sec)
Records: 0  Duplicates: 0  Warnings: 0
3.查看lock.txt
cat lock.txt
Sun Apr 17 20:39:56 HKT 2016
Sun Apr 17 20:39:57 HKT 2016
Sun Apr 17 20:39:58 HKT 2016
4.drop索引,并重启mysql,以清空buffer pool缓存数据
alter table sakila.payment drop index payment_date_ix1
小结:监控到表sakila.payment add index在执行建索引过程中无锁表,且建索引时间为0.17秒。;
测试在payment_date字段在默认方式建立索引所需时间和是否锁表?
1.会话1先执行每秒监控查询表payment是否有锁,并记录到txt文件
#!/bin/bash
while : ;do
date>>/data/mysql/mysql3376/lock.txt &&
mysql -uroot -psafe_2016 -S /tmp/mysql3376.sock -e "show open tables from sakila where In_use>0">>/data/mysql/mysql3376/lock.txt
sleep 1
2.会话2执行建索引脚本
(product)root@localhost [(none)]> alter table sakila.payment add index payment_date_ix1 (payment_date);
Query OK, 0 rows affected (0.21 sec)
Records: 0  Duplicates: 0  Warnings: 0
3.查看lock.txt
cat lock.txt
Sun Apr 17 20:44:25 HKT 2016
Sun Apr 17 20:44:26 HKT 2016
Sun Apr 17 20:44:27 HKT 2016
4.drop索引,并重启mysql,以清空buffer pool缓存数据
alter table sakila.payment drop index payment_date_ix1;
小结:监控到表sakila.payment add index在执行建索引过程中无锁表,且建索引时间为0.21秒。
1.ALGORITHM=INPLACE和默认方式在线建索引都不会锁表,而copy方式必需锁表
2.ALGORITHM=COPY,LOCK=NONE两个参数不能同时组合使用,因为copy方式必需要加锁。
3.ALGORITHM=INPLACE方式比ALGORITHM=COPY方式建索引时间至少减少70%。
4.重启mysql方式是否有比较干净清空buffer pool中缓存数据,需进一步验证确认。
一、MySQLddl的问题现状在运维mysql数据库时,我们总会对数据表进行ddl变更,修改添加字段或者索引,对于mysql而已,ddl显然是一个令所有MySQLdba诟病的一个功能,因为在MySQL... 来自: zengxuewen2045的博客 基本信息:(product)root@localhost[lots]>select@@version;+------------+|@@version |+------------+|5.6.29-l... 来自: zengxuewen2045的博客 mysql5.6开始支持在线ddl,在线ddl能够提供下面的好处;1提高生产环境的可用性2在ddl执行期间,获得性能和并发性的平衡,可以指定LOCK从句与algorithm从句,lock=exclus... 来自: 敖尔其楞的专栏 背景:MySQL5.6在线DDL不锁表,现在我有一张1亿的表,需要增加一个字段,假如我让你去增加这个字段,你应该注意什么,具体怎么操作?操作如下:1.注意磁盘空间(临时表目录) 2.当前内存剩余量 3... 来自: Data & Analysis http://www.cnblogs.com/MYSQLZOUQI/p/4537774.html解答你也看一下MySQL5.6在线DDL不锁表,现在我有一张1亿的表,需要增加一个字段,假如我让你去增加... 来自: 草根上的须子 这几天在做数据库的优化,有个2亿记录的表,发现需要添加一个联合索引,结果就采用普通的createindexindex_nameontablename(entp_id,sell_date),结果悲剧了,... 来自: 老焦的blog-奋斗12年IT虫子所思所想所感 背景IT人员经常需要线上mysql执行一些增加字段,加入索引的DDL的操作。但是有些表数据量比较大,超过几百万或者字段特别多,需要考虑这些DDL的操作是否会造成锁表进而造成生产环境出现问题。因此在执行... 来自: frog4的专栏 mysql添加索引:ALTERTABLE表名ADDINDEX索引名称(字段名);mysql查看索引:showindexfrom表名;mysql增加字段:altertable表名Addcolumn字段名... 来自: xuezhangjun0121的博客 小白要在千万级数据的表上建索引,8个索引,创建了一个晚上都木有成功,这要是生产上线日岂不是要挂,要挂呀?心急如焚搜搜搜.....找到一个好资料.... 一. 先来看一下创建索引要做哪些操作: 1. 把 MySQL索引MySQL索引的建立对于MySQL的高效运行是很重要的,索引可以大大提高MySQL的检索速度。打个比方,如果合理的设计且使用索引的MySQL是一辆兰博基尼的话,那么没有设计和使用索引的M... 来自: Lenux2017的博客 1.索引的概念索引是一个单独的,存储在磁盘上的数据库结构,它们包含着对数据表里所有记录的引用指针。使用索引用于快速找出在某个或多个列中有一特定值的行,所有的mysql列类型都可以被索引,对相关的列使用... 来自: leeyongyong 由于目前生产环境中大表比较多,这里选择了一个600M的小表做一次在线测试。环境:Ubuntu12.04mysql版本:5.6.29-log表引擎:Innodb一、pt-online-schema-ch... 来自: 学无涯,愈进而愈惘 mysql>selectversion();+-----------+|version()|+-----------+|5.6.17  |+-----------+mysql>CREATETABLEt... 来自: 关注系统性能调优 [MySQL5.6]MySQL5.6onlineddl使用、测试及关键函数栈本文主要分为三个部分,第一部分是看文档时的笔记;第二部分使用sysbench简单测试了下性能损耗;第三部分阐述了关键函数栈,... 来自: seteor的专栏 索引的创建1创建表的时候创建Createtable example(Idint,Greadfloat,[unique|fulltext|spatial]index|key[别名](属性名1[(长度)]... 来自: the_yiMI的博客 createtabletmplikepaper_author;ALTERTABLEtmpADDINDEX(`PaperID`)insertintotmp(ooo,...) select  ooo,... 来自: 云上的日子 如果,在一个已经存在的表上创建索引,可以使用CREATEINDEX语句,语法格式CREATE[UNIQUE|FULLTEXT|SPATIAL]INDEX索引名ON表名(字段名[(长度)][ASC|DE... 来自: 天高任鸟飞 SQL语句在线练习 http://sample.jimstone.com.cn/xsql/ SQL语句测验 http://www.w3school.com.cn/quiz/quiz.asp?quiz... 来自: 大数据开发 许多同学在做MySQL数据库测试时苦于没有测试数据,除了线上导一小段数据、或者利用sysbench生成测试数据外,官方其实也提供了了一套名为:EmployeesSampleDatabase的测试库(该... 来自: leonpenn的博客 *你本如虎,正当添翼* (day05)关联查询练习1.查询出每个员工的名字和所对应的地址selecte.ename,d.locfromempejoindeptdone.deptno=d.deptno;2.查询出所有商品的名字... 来自: wangmusk的博客 1,统计每个部门有多少人1,selectdept_no,count(*)asdept_count,d_namefromemjoindeptonem.dept_no=dept.d_nogroupbyde... 来自: 123456 今天遇到一个表锁,对表进行select操作阻塞,最后发现在表操作时的时候执行了创建索引,导致整个表锁了测试如下:       1.先执行一个慢查询        mysql>selectsleep(5... 来自: weiwang的专栏 学生成绩表(stuscore):姓名:name课程:subject分数:score学号:stuid张三数学891张三语文801张三英语701李四数学902李四语文702李四英语802创表代... 来自: qq_24070723的博客 https://blog.csdn.net/Stubborn_Cow/article/details/50835497?utm_source=blogxgwz0https://blog.csdn.ne... 来自: 通往神秘的道路的专栏 求一个sql在线练习的网址 以前学习sql语句的时候,找到过一个在线练习的网址,网页上贴出一系列题目,然后在题目下方要自己输入sql语句并执行,如果正确就会弹出执行结果,如果错误则提示语句出错。 现在 createindexind_t_object_idontest(object_id); 一直hang住,10分钟没有反应,看了一下后台有什么问题: SHOWPROCESSLIST; Waiting... 来自: 关注系统性能调优 转载自https://www.cnblogs.com/a-du/p/7117837.html------------------------------------------------------... 来自: test 最近遇到的一个问题,需要在一张1800万数据量的表中添加加一个字段并添加索引,但是直接添加会导致mysql崩溃或者锁表时间太长影响用户操作,所以需要利用其他的方法进行添加,这篇文章主要给大家介绍了My... 来自: json_li的博客 ##---------mysql学习(四)索引的建立--------####今天突然开窍了,所以补充点索引方面的知识。#创建索引,这里仍然以数据较少的mytab表为例:#原数据为:mysql>setn... 来自: Java 今天线上遇到了一个问题,线上几十台机器同时报警,线程繁忙,所有的异常信息为不能获得数据库连接,造成线程的等待超时。异常信息:org.springframework.jdbc.CannotGetJdbc... 来自: huangqh_2012的专栏 分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!&n... 来自: jgfyyfd的博客 几百万的数据,mysql快速高效创建索引有一个问题,一张表有3百万条记录,随着时间的增加,记录量会更多,此时查询速度很慢。在创建此表前没有未相应字段添加索引,所以此时需要为表添加索引。但是因为数据量大... 来自: 发展是解决一切问题的总钥匙 Explain命令在解决数据库性能上是第一推荐使用命令,大部分的性能问题可以通过此命令来简单的解决,Explain可以用来查看SQL语句的执行效果,可以帮助选择更好的索引和优化查询语句,写出更好的优化... 来自: 纳兰_容若 测试数据本机一张表users有100百万条记录。在创建此表前没有未相应字段添加索引,所以此时需要为表添加索引。但是因为数据量大的原因,索引添加可能不成功,想了很多办法,终于挖坑成功。开始准备工作,us... 来自: echojson的专栏 MySQL并发测试 一测试说明本次主要对比MySQL官方社区版mysql5.6.34和onesql5.6.34。测试模式为从100并发到4000并发,每次增加100并发,单表1000万数据,每次总请求... 来自: Vovis的博客 mysqlversion:mysql5.6.35os:CentOSLinuxrelease7.2.1511(Core) IP:10.159.45.100CPU:32CPUMemory:128GBSys... 来自: wxc20062006的专栏 下载地址:http://dev.mysql.com/downloads/mysql/点进去,就可以看到下面界面,虽然显示32bit,但是点进去会自动变成64位:安装非常简单,傻瓜式的,我是选择的完全安... 来自: jiq•钦's technical Blog (一)索引的作用索引通俗来讲就相当于书的目录,当我们根据条件查询的时候,没有索引,便需要全表扫描,数据量少还可以,一旦数据量超过百万甚至千万,一条查询sql执行往往需要几十秒甚至更多,5秒以上就已经让... 来自: 李秀才的博客 如果mysql的表上百万千万之后,增加索引时间上会比较久,对于OLTP和OLAP业务都无法满足。直接发起alter也会发生锁表情况。加索引时间久可能因为如下原因:1:添加索引的字段表大索引构建过程中需... 来自: ZhangBiao 的专栏 对mysql有所研究的都知道,当mysql某个业务表上有未提交的活动事务的时候,你去执行在线DDL,这相当危险,直接会被卡住,showprocesslist里面会显示这个DDL遇到了MDL锁等待,即“... 来自: Data & Analysis 文章来自:https://www.cnblogs.com/beef/p/7376035.html 1、MySQL各版本,对于DDL的处理方式是不同的,主要有三种: ①:CopyTable方式:这是In... 来自: huangliang0703的专栏 参考rul:https://www.cnblogs.com/zengkefu/p/5674945.html总结如下:1,除了主键修改,字段类型与长度变更,字符集变更,其他都支持ddl.部分操作占用资源... 来自: huoyuanshen的博客 MySQL从5.6.17以后,支持在线修改表结构操作(onlineddl),即在变更表结构的过程中,不阻塞dml和dql操作,这对dba来说无疑是个巨大的利好,如果你有过千万级别数据的表中修改表结构的... 来自: u010027484的博客 参考Android源码: https://code.google.com/p/cyanogen-updater/source/browse/trunk/src/cmupdaterapp/utils/... 来自: Crazy Bird https://github.com/imharrywu/fastcoin本帖只谈技术实现,首先我们自己来编译一个比特币客户端吧, 技术讨论QQ群,161928517,欢迎大家入伙(注明:csdn)。... 来自: 开心乐源的专栏 最近在做一个每天定点从FTP自动下载节目.xml并更新到数据库的功能。首先想到用 FileSystemWatcher来监控下载到某个目录中的文件是否发生改变,如果改变就执行相应的操作,然后用timer... 来自: kongwei521的专栏 本篇文章是根据我的上篇博客,给出的改进版,由于时间有限,仅做了一个简单的优化。相关文章:将excel导入数据库2018年4月1日,新增下载地址链接:点击打开源码下载地址十分抱歉,这个链接地址没有在这篇... 来自: Lynn_Blog nginx是个好东西,Nginx (engine x) 是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambl... 来自: maoyuanming0806的博客 问题场景描述整个项目通过Maven构建,大致结构如下: 核心Spring框架一个module spring-boot-base service和dao一个module server-core 提供系统... 来自: 开发随笔 Java 中的堆是 JVM 所管理的最大的一块内存空间,主要用于存放各种类的实例对象。   在 Java 中,堆被划分成两个不同的区域:新生代 ( Young )、老年代 ( Old )。新生代 (... 来自: 朱小厮的博客 1. 规则引擎面临的问题:业务规则的实现大部分是由开发人员来实现的 业务规则需要业务分析人员能够阅读和理解 业务规则的可读性和用户的友好性都不太好2. DSL领域特殊语言DSL == Domain... 来自: 哎幽的成长 错误类型及描述: expdp 导出表在表分析是开始出现报错。 ORA-39127: unexpected error from call to export_string :=SYS.DBMS_A... 一、Windows设置1.点击开始->运行,在对话框中输入”services.msc”,回车,打开windows服务管理器。2.在服务列表中选中”VMware USB Arbitration Serv... 来自: fendoubasaonian的专栏 若是研究区在中国,则在地理空间数据云有中国区合成好的数据,直接下载用即可。数据格式为TIF。坐标为WGS84,不用再转换投影。下载网址为:http://www.gscloud.cn/sources/?... 来自: hengcall的博客