MySQL
文章平均质量分 63
zyz511919766
这个作者很懒,什么都没留下…
展开
-
mysql_config_editor/login-path使用
login-path是MySQL5.6开始支持的新特性。通过借助mysql_config_editor工具将登陆MySQL服务的认证信息加密保存在.mylogin.cnf文件(默认位于用户主目录) 。之后,MySQL客户端工具可通过读取该加密文件连接MySQL,避免重复输入登录信息,避免敏感信息暴露。mysql_config_editor使用帮助:配置:mysql_co原创 2016-10-14 12:34:38 · 12669 阅读 · 0 评论 -
(三)MySQL InnoDB非锁定一致性读与锁定读
MySQL InnoDB非锁定一致性读与锁定读(一)MySQL InnoDB事务模型(二)MySQL InnoDB锁模型(三)MySQL InnoDB非锁定一致性读与锁定读(四)MySQL InnoDB锁类型及幻象读问题(五)MySQL InnoDB中各类语句加锁方式(六)事务的提交与回滚极死锁检测、处理和预防非锁定一致性读一致性读,意味着InnoDB使用“多本版”原创 2015-10-27 17:17:05 · 8743 阅读 · 3 评论 -
MySQL中重复索引和重复外键清理
MySQL允许在相同列上创建重复的索引,但这样做对数据库却是有害而无利的,需要定期检查此类重复索引以改善数据库性能。可减少磁盘空间占用、减少磁盘IO、减少优化器优化查询时需要比较的索引个数、减少数据库维护冗余索引的各类开销、提高数据库性能(插入、更新、删除)重复索引检测 pt-duplicate-key-checker:通过SHOW CREATE TABLE输出的表定义检测MySQL表中重复或者冗原创 2015-10-27 17:36:20 · 4899 阅读 · 0 评论 -
(六)事务的提交与回滚极死锁检测、处理和预防
事务的提交与回滚极死锁检测、处理和预防(一)MySQL InnoDB事务模型(二)MySQL InnoDB锁模型(三)MySQL InnoDB非锁定一致性读与锁定读(四)MySQL InnoDB锁类型及幻象读问题(五)MySQL InnoDB中各类语句加锁方式(六)事务的提交与回滚极死锁检测、处理和预防事务的提交与回滚默认情况下,MySQL开启自动提交,每条语句执行翻译 2015-10-27 17:20:55 · 7452 阅读 · 0 评论 -
(五)MySQL InnoDB中各类语句加锁方式
MySQL InnoDB中各类语句加锁方式(一)MySQL InnoDB事务模型(二)MySQL InnoDB锁模型(三)MySQL InnoDB非锁定一致性读与锁定读(四)MySQL InnoDB锁类型及幻象读问题(五)MySQL InnoDB中各类语句加锁方式(六)事务的提交与回滚极死锁检测、处理和预防锁定读、UPDATE、DELETE通常在处理SQL语句的过程中在翻译 2015-10-27 17:19:49 · 11760 阅读 · 3 评论 -
MySQL中general log使用
开启general log会将所有到达MySQL Server的SQL语句记录下来。一般不会开启开功能,因为log的量会非常庞大。但个别情况下可能会临时的开一会儿general log以供排障使用。 相关参数一共有3:general_log、log_output、general_log_file general_log:全局动态变量,默认关闭 log_output :全局动态变量,可取FILE、原创 2015-10-22 17:03:11 · 15910 阅读 · 1 评论 -
MySQL UPDATE语句中的一个诡异现象
给你一个很简单的语句,你能一眼看出语句的存在的问题么?表结构如下:CREATE TABLE `test_update` ( `id` int(11) DEFAULT NULL, `name` varchar(10) NOT NULL, `address` varchar(20) NOT NULL) ENGINE=InnoDB DEFAULT CHARSET=utf8表中数据如下:mys原创 2015-10-22 16:57:02 · 13172 阅读 · 5 评论 -
MySQL中一些查看事务和锁情况的常用语句
一些查看数据库中事务和锁情况的常用语句查看事务等待状况:SELECT r.trx_id waiting_trx_id, r.trx_mysql_thread_id waiting_thread, r.trx_query waiting_query, b.trx_id blocking_trx_id, b.trx_mysql_thread_id blo原创 2015-10-22 16:53:12 · 19319 阅读 · 0 评论 -
MySQL NOT EXISTS优化的一个案例
原始语句:SELECT *FROM dcf_account.t_posting_transaction t1WHERE NOT EXISTS ( SELECT * FROM dcf_loan.t_account_posting_detail t2原创 2015-10-22 16:48:27 · 21146 阅读 · 10 评论 -
MySQL使用中的一些方法与技巧
利用MySQL表生成唯一id的方法 表结构:CREATE TABLE `unique_id` ( `id` int(11) NOT NULL DEFAULT 0) ENGINE=InnoDB DEFAULT CHARSET=utf8;字段更新与获取:UPDATE unique_id SET id = LAST_INSERT_ID(id + 1); SELECT LAST_INSERT_ID(翻译 2015-10-22 17:19:21 · 936 阅读 · 0 评论 -
MySQL RESET MASTER与RESET SLAVE
RESET MASTER 删除所有index file 中记录的所有binlog 文件,将日志索引文件清空,创建一个新的日志文件,这个命令通常仅仅用于第一次用于搭建主从关系的时的主库, 注意 reset master 不同于purge binary log的两处地方 1 reset master 将删除日志索引文件中记录的所有binlog文件,创建一个新的日志文件 起始值从000001转载 2015-10-22 17:24:47 · 12651 阅读 · 0 评论 -
MySQL 表锁以及FLUSH TABLES操作
创建测试表t1, t2use test;CREATE TABLE `t1` ( `i` int(11) NOT NULL DEFAULT '0', PRIMARY KEY (`i`)) ENGINE=InnoDB DEFAULT CHARSET=utf8; CREATE TABLE `t2` ( `i` int(255) NOT NULL, PRIMARY KEY (`i`))原创 2015-10-22 17:11:15 · 13973 阅读 · 0 评论 -
MySQL中数据库重命名
今天同事让帮忙把线上的数据库重命名。恩?数据库重命名?这种需求的概率小之又小,今天居然还真给碰到了。表重名的话是rename table old_table to new_table; So,库的重命名最简单快捷的办法是 rename old_db to new_db么? 随便建了个测试库test,试着执行了一下臆想的rename命令,好吧,不行。搜了一下文档才发现,原来早期MySQL版本(5.1.原创 2015-10-22 17:00:46 · 70385 阅读 · 0 评论 -
(一)MySQL InnoDB事务模型
MySQL InnoDB事务模型(一)MySQL InnoDB事务模型(二)MySQL InnoDB锁模型(三)MySQL InnoDB非锁定一致性读与锁定读(四)MySQL InnoDB锁类型及幻象读问题(五)MySQL InnoDB中各类语句加锁方式(六)事务的提交与回滚极死锁检测、处理和预防InnoDB四种事务隔离级别事务的ACID特性:原子性、一致性、隔离性原创 2015-10-27 16:58:14 · 3906 阅读 · 0 评论 -
(二)MySQL InnoDB锁模型
MySQL InnoDB锁模型(一)MySQL InnoDB事务模型(二)MySQL InnoDB锁模型(三)MySQL InnoDB非锁定一致性读与锁定读(四)MySQL InnoDB锁类型及幻象读问题(五)MySQL InnoDB中各类语句加锁方式(六)事务的提交与回滚极死锁检测、处理和预防前边已经提到过S锁、X锁、行锁等概念。这里详细介绍一下InnoDB中的锁模型原创 2015-10-27 17:00:24 · 1938 阅读 · 1 评论 -
MySQL数据类型char与varchar中数字代表的究竟是字节数还是字符数?
实例是最好的说明,所以,废话少说,看表看例子~mysql> show create table test_varchar_utf8\G*************************** 1. row *************************** Table: test_varchar_utf8Create Table: CREATE TABLE `test_varch原创 2016-06-15 15:00:28 · 26788 阅读 · 11 评论 -
MySQL Forcing InnoDB Recovery
Forcing InnoDB RecoveryMySQL非正常重启或者磁盘故障可能导致MySQL数据文件损坏。这种情况下,如果没有可用的备份文件则可使用innodb_force_recovery选项强制InnoDB引擎启动。这时一些后台操作不会运行,可以较为安全的dump出数据库中的表。innodb_force_recovery选项可选的值为0-6,默认也即正常情况下值为0,在发生翻译 2016-03-23 15:50:00 · 3465 阅读 · 0 评论 -
MySQL中select filed from table where field in (....)语句的排序问题
select filed from table where field in (....)语句的排序问题执行语句发现返回的结果并非按照in列表中的顺序排序,具体可见如下示例:示例表:mysql> show create table test_select_in\G*************************** 1. row *********************原创 2016-02-23 14:20:13 · 4588 阅读 · 0 评论 -
MySQL SQL优化案例:相关子查询(dependent subquery)优化
原始语句:SELECT t1.*FROM t_payment_bank_account_info t1WHERE EXISTS ( SELECT 1 FROM t_payment_account_dtl t2 WHERE t1.account_no = t2.account_no AND t2.parent_a原创 2016-01-06 16:42:35 · 15710 阅读 · 4 评论 -
MySQL SQL优化案例:LIMIT M,N大偏移量分页
原查询语句:SELECT loan_document_id, contract_id, applicant_contract_id, buyer_id, buyer_name, seller_id, seller_name, loan_document_no, loan_document_type, order_content, amount,原创 2016-01-06 16:36:28 · 11011 阅读 · 2 评论 -
MySQL中表创建失败的原因之一
报错信息:ERROR 1005 (HY000): Can't create table 'example_db.example_table' (errno: 150)故事背景:从生产环境example_db数据库往测试环境对应的库导入恢复数据。因为前一天使用mysqldump工具对生产环境整个实例中所有数据库做过一次备份,考虑到再做一次针对example_db库的备份比较耗时,于是原创 2015-12-02 15:00:33 · 13122 阅读 · 0 评论 -
MySQL数据库中的大小写敏感性
MySQL中数据库与数据目录内的数据库目录相对应,每个表对应所在的数据库对应的目录下边的一系列文件,触发器也与特定的文件关联。因此,底层操作系统对大小写的敏感性与在其上运行的数据库的大小写敏感性息息相关。这也意味着,库名、表明、触发器名在Windows系统下大小写不敏感而在多数类Unix系统下大小写敏感,一个例外是OS X系统下(默认使用HFS+文件系统)大小写不敏感。然而,OS X还支持UFS文件原创 2015-12-14 17:09:52 · 2510 阅读 · 0 评论 -
MySQL 5.7新特性
新增特性Security improvements. mysql.user表新增plugin列,且若某账户该字段值为空则账户不能使用。从低版本MySQL升级至MySQL5.7时要注意该问题,且建议DBA将使用mysql_old_password插件的账户替换为使用 mysql_native_password插件。数据库管理员可以制定账户密码自动过期策略,密码过期后必须强制进行更改。(http://翻译 2015-11-25 15:42:34 · 17953 阅读 · 0 评论 -
一个数据库服务器高iowait的优化案例
一个数据库服务器高iowait的优化案例1.开发反馈某一测试环境sql运行缓慢,而在其他测试环境该sql运行很快。两个环境其配置相同,均只部署了mysql服务器。 2.执行top命令发现sql运行缓慢的机器上磁盘iowait较sql运行较快的机器高出很多。推测这是导致sql运行缓慢的主因,因为该sql是要读取表,表较大,且要扫描的行数较多。 3.到底是什么导致机器iowait高呢,执行iotop原创 2015-11-25 15:18:21 · 6707 阅读 · 0 评论 -
MySQL中部分系统变量介绍
对比了一下不同环境下两台MySQL服务器的运行参数配置,除了文件名、路径等内容的差异外,还存在其他一些不同。借此机会简单罗列其中一部分并加以说明 ~have_symlink DISABLED YES用以支持在表定义中指定数据目录和索引目录(全局静态系统变量)原创 2015-12-10 13:41:32 · 2378 阅读 · 0 评论 -
(四)MySQL InnoDB锁类型及幻象读问题
MySQL InnoDB锁类型及幻象读问题(一)MySQL InnoDB事务模型(二)MySQL InnoDB锁模型(三)MySQL InnoDB非锁定一致性读与锁定读(四)MySQL InnoDB锁类型及幻象读问题(五)MySQL InnoDB中各类语句加锁方式(六)事务的提交与回滚极死锁检测、处理和预防前边根据InnoDB锁对资源的访问限制对锁进行了归类:X、S、I翻译 2015-10-27 17:18:35 · 1965 阅读 · 0 评论 -
MySQL5.6中新增特性、不推荐使用的功能以及废弃的功能
虽然已经使用MySQL5.6版本有一段时间了,但由于没有和之前的版本作过详细比较,所以对于哪些重要的或者不太重要的特性是在新版本中引入的,还有哪些特性已经或者将要从旧版本中移除的并没有一个十分全面的了解。最近有一个将某数据库实例由5.5升级为5.6的需求,所以对于MySQL5.6和5.5版本之间的差异做了一个简单梳理。新增 Security improvements.翻译 2015-11-16 13:57:58 · 7992 阅读 · 0 评论 -
MySQL DECIMAL数据类型
同事问MySQL数据类型DECIMAL(N,M)中N和M分别表示什么含义,M不用说,显然是小数点后的小数位数,但这个N究竟是小数点之前的最大位数,还是加上小数部分后的最大位数?这个还真记不清了。于是乎,创建测试表验证了一番,结果如下:测试表,seller_cost字段定义为decimal(14,2)CREATE TABLE `test_decimal` ( `id` int(11) NOT NU原创 2015-10-22 16:43:57 · 59802 阅读 · 1 评论 -
pt-table-checksum数据一致性校验工具和pt-table-sync数据同步工具解析
1.背景我的MySQL主从数据库运行了很长时间了,我现在不知道主从数据库中的数据是否一致?我该怎么办?该怎么验证主从库中的数据是否一致?如果我明确的知道主从数据库由于某次故障或者误操作已经存在数据不一致,那么我该怎么修复呢?需要使用主库数据重新搭一遍复制么?或者需要重新开始某个库或者表的复制么?相信很多MySQL DBA都提出过这些问题,或者自己动手实现过检测和恢复的功能。实际上大名鼎鼎的Perco原创 2015-10-22 09:58:48 · 4760 阅读 · 0 评论 -
关于MySQL的SLEEP(N)函数
都知道通过在MySQL中执行select sleep(N)可以让此语句运行N秒钟:mysql> select sleep(1);+----------+| sleep(1) |+----------+| 0 |+----------+1 row in set (1.00 sec)返回给客户端的执行时间显示出等待了1秒钟借助于sleep(N)这个函数我们可以在M原创 2014-12-29 17:58:52 · 66870 阅读 · 0 评论 -
Linux(CentOS 5.8)下部署Django-1.5.5遇到的一些问题
安装Python(Python-2.7.5)shell>tar xzvf Python-2.7.5.tgzshell>cd Python-2.7.5shell>./configureshell>makeshell>sudo make install安装Django-1.5.5shell>tar xzvf Django-1.5.5.tar.gzshell>cd Dja原创 2013-11-25 16:34:52 · 6709 阅读 · 0 评论 -
结合mysqlbinlog与mysqldump进行MySQL数据备份与恢复(适用于较小的数据量)
通过mysqlbinlog工具备份二进制日志文件mysqlbinlog --read-from-remote-server --host=192.168.83.37 --port=55944 --user=us_yanzhaozhang --password --raw --to-last-log VMS00782-bin.000001mysqlbinlog --read-from翻译 2013-11-06 16:28:42 · 6375 阅读 · 1 评论 -
Percona Toolkit for MySQL安装(CentOS5.8)
下载percona-toolkit-2.2.5-2.noarch.rpm 安装percona-toolkit-2.2.5-2.noarch.rpmsudo rpm -i percona-toolkit-2.2.5-2.noarch.rpmerror: Failed dependencies:perl(DBI) >= 1.13 is needed by percona-toolkit-2原创 2013-11-15 16:50:23 · 6157 阅读 · 0 评论 -
MySQL复制原理与配置
1复制配置1.1如何搭建复制1.1.1master配置开启二进制日志并创建唯一的Server ID:在my.cnf文件的[mysqld]节加入相应配置信息并重启Server使其生效。[mysqld]log-bin=mysql-binserver-id=1注意事项复制组中每台Server的server-id必须唯一以便于识别不同的Server。server-id范围为翻译 2013-11-15 15:47:09 · 9160 阅读 · 0 评论 -
MySQL中Global、Session和Both(Global & Session)范围的Dynamic及Not Dynamic类型的变量的作用范围和设置方法
1. Global & Dynamicexample:slow_query_logØ 显示该变量的值:当前设置为OFF Ø 在一个session中设置该Global &Dynamic类型的变量:可以看到,对于global类型的变量必需通过global关键字来设置其值。 Ø 在同一个session中重新查看该变量的值:发现该变原创 2013-10-28 16:13:19 · 9207 阅读 · 1 评论 -
MySQL中REPLACE INTO语句的用法
在向表中插入数据时,我们经常会遇到这样的情况:1、首先判断数据是否存在;2、如果不存在,则插入;3、如果存在,则更新。那么 MySQL 中有无一种简单的办法在一条语句中实现这样的逻辑?对了,那就是使用replace into。replace into t(id, update_time) values(1, now())或者replace into t(转载 2013-10-28 15:27:00 · 5395 阅读 · 0 评论 -
mysqldump命令详解
1.简介mysqldump为MySQL逻辑备份工具,产生一系列SQL语句,之后重新执行以产生备份的库、表及数据。也可产生CSV、XML等格式的数据。适用于各类引擎的表。运行mysqldump需一定的权限。如,备份表的最低权限为select,备份视图需show view权限,备份触发器需trigger权限。mysqldump的输出可能包含alter database语句,如,用于保持备份库的翻译 2013-10-18 14:27:53 · 37399 阅读 · 1 评论 -
安装MySQL5.6新建用户并创建密码时总是提示密码不符合要求:ERROR 1819 (HY000): Your password does NOT satisfy the CURRENT ……
安装MySQL5.6新建用户并创建密码时总是提示密码不符合要求:ERROR 1819 (HY000): Your password does NOT satisfy the CURRENT policy requirements。查看得知,原来MySQL5.6.6增加了密码强度验证插件validate_password,相关参数设置的较为严格,所以……使用了该插件会检查设置的密码是翻译 2013-10-15 17:35:46 · 46820 阅读 · 0 评论 -
两主机搭建MySQL主从复制后,show slave status显示:Last_IO_Error: error connecting to master ……
两台主机A、B搭建mysql主从复制关系(A为master,B为slave)后,在slave上执行show slave status,结果中显示Last_IO_Error: error connecting to master 'usvr_replication@VMS00782:55944'……查看错误日志文件先在A上确认复制用户账户是否存在且是否赋了正确的权限mysql> mysq原创 2013-10-16 09:35:40 · 104275 阅读 · 5 评论 -
MySQL5.6 InnoDB FULLTEXTIndexes研究测试
1.概要InnoDB引擎对FULLTEXT索引的支持是MySQL5.6新引入的特性,之前只有MyISAM引擎支持FULLTEXT索引。对于FULLTEXT索引的内容可以使用MATCH()…AGAINST语法进行查询。为了在InnoDB驱动的表中使用FULLTEXT索引MySQL5.6引入了一些新的配置选项和INFORMATION_SCHEMA表。比如,为了监视一个FULLTEXT索引中文本翻译 2013-10-16 14:43:11 · 116639 阅读 · 3 评论