【目录】mysql 进阶篇系列

时间:2022-05-13 10:38:49

随笔分类 - mysql 进阶篇系列

mysql 开发进阶篇系列 55 权限与安全(安全事项 )
摘要: 一. 操作系统层面安全 对于数据库来说,安全很重要,本章将从操作系统和数据库两个层面对mysql的安全问题进行了解。 1. 严格控制操作系统账号和权限 在数据库服务器上要严格控制操作系统的账号和权限,在安装mysql时就要重视安全问题。 (1) 锁定mysql用户。 (2) 其它任何用户都采取独立的阅读全文

posted @ 2018-10-23 17:46 花阴偷移 阅读(266) | 评论 (0) 编辑

mysql 开发进阶篇系列 54 权限与安全(账号管理的各种权限操作 下)
摘要: 1. 查看权限 2. 更改权限 可以进行权限的新增和回收,使用grant来新增,使用revoke来回收。在前面52章节中也有介绍revoke的使用。 也可以直接对user,db,tables_priv,columns_prive 四个权限表进行更新,这个在上篇中也有讲到。 更多revoke语法的了解阅读全文

posted @ 2018-10-20 09:02 花阴偷移 阅读(706) | 评论 (0) 编辑

mysql 开发进阶篇系列 53 权限与安全(账号管理的各种权限操作 上)
摘要: 一. 概述 在了解前两篇的权限系统介绍后,这篇继续讲账号的管理,这些管理包括账号的创建,权限更改,账号删除等。用户连接数据库的第一步都是从账号创建开始。 1. 创建账号 有两种方法可以用来授权账号:(1) 是使用grant来授权账号,(2) 是直接操作权限表。 使用grant操作简单,出错率更少。使阅读全文

posted @ 2018-10-19 17:42 花阴偷移 阅读(245) | 评论 (0) 编辑

mysql 开发进阶篇系列 52 权限与安全(系统四个权限表的粒度控制关系)
摘要: 一.概述 接着上篇的权限介绍,当用户进行连接的时候,权限表的存取过程有以下两个阶段: (1) 先从user表中的host,user, authentication_string 这3个字段中判断连接的ip,用户名,密码是否存在于表中,如果存在,则通过身份验证。 (2) 通过验证后,则按照以下权限表的阅读全文

posted @ 2018-10-18 17:43 花阴偷移 阅读(87) | 评论 (0) 编辑

mysql 开发进阶篇系列 51 权限与安全(权限表user,db详细介绍 )
摘要: 一.概述 mysql 的权限系统主要用来对连接到数据库的用户进行权限验证,以此来判断此用户是否属于合法用户,以及合法用户给予的相应数据库权限。下面将介绍权限系统的工作原理,以及将要熟练掌握账号的管理和使用方法(mysql版本 5.7)。 1.1 权限系统的工作原理 mysql 权限系统通过两个阶段进阅读全文

posted @ 2018-10-17 17:51 花阴偷移 阅读(501) | 评论 (0) 编辑

mysql 开发进阶篇系列 50 表的数据导入(load data infile,mysqlimport )
摘要: 一.概述 上篇讲到的表的数据导出(select .. into outfile 或者mysqldump),这篇继续讲表的数据导入,导入也同样有二个方法,分别是load data infile... 和mysqlimport。本质是一样的,区别在于前者是mysql内部执行, 后者是mysql 外部执行阅读全文

posted @ 2018-10-16 17:34 花阴偷移 阅读(82) | 评论 (0) 编辑

mysql 开发进阶篇系列 49 表的数据导出(into outfile,mysqldump)
摘要: 一.概述 在数据库的日常维护中,表的导入和导出是很频繁的操作,本篇讲解如何使用导入功能,并以案例为演示。某些情况下,需要将表里的数据导出为某些符号分割的纯数据文本,而不是sql语句,比如:(1)用来作为excel显示。 (2)节省备份空间。(3)为了快速的加载数据,load data的加载速度比普通阅读全文

posted @ 2018-10-15 17:38 花阴偷移 阅读(128) | 评论 (0) 编辑

mysql 开发进阶篇系列 48 物理备份与恢复(xtrabackup 的增量备份与恢复,以及备份总结)
摘要: 一.增量备份概述 xtrabackup 和innobackupex 二个工具都支持增量备份,这意味着能复制自上次备份以来更改的数据。可以在每个完整备份之间执行许多增量备份,因此,您可以设置一个备份过程,例如每周一次完整备份和每天一次增量备份,或者每天一次完整备份和每小时一次增量备份。对于定期自动备份阅读全文

posted @ 2018-10-11 17:47 花阴偷移 阅读(395) | 评论 (2) 编辑

mysql 开发进阶篇系列 47 物理备份与恢复(xtrabackup 的完全备份恢复,恢复后重启失败总结)
摘要: 一. 完全备份恢复说明 xtrabackup二进制文件有一个xtrabackup --copy-back选项,它将备份复制到服务器的datadir目录下。下面是通过 --target-dir 指定完全备份文件的目录,还原到datadir目录下。 可以使用xtrabackup --move-back选阅读全文

posted @ 2018-10-10 17:46 花阴偷移 阅读(172) | 评论 (0) 编辑

mysql 开发进阶篇系列 46 物理备份与恢复( xtrabackup的 选项说明,增加备份用户,完全备份案例)
摘要: 一. xtrabackup 选项说明 在操作xtrabackup备份与恢复之前,先看下该工具的选项,下面记录了xtrabackup二进制文件的部分命令行选项,后期把常用的选项在补上。点击查看xtrabackup Option 指南 选项名 说明 --apply-log-only 仅在准备备份时,执行阅读全文

posted @ 2018-10-01 16:03 花阴偷移 阅读(192) | 评论 (0) 编辑

mysql 开发进阶篇系列 45 物理备份与恢复(xtrabackup 安装,用户权限,配置)
摘要: 一. 安装说明 安装XtraBackup 2.4 版本有三种方式: (1) 存储库安装Percona XtraBackup(推荐) (2 )下载的rpm或apt包安装Percona XtraBackup。 (3) 源代码编译和安装。 Percona为yum (Red Hat、CentOS和Amazo阅读全文

posted @ 2018-09-30 12:00 花阴偷移 阅读(88) | 评论 (0) 编辑

mysql 开发进阶篇系列 44 物理备份与恢复( 热备份xtrabackup 工具介绍)
摘要: 一.概述 物理备份和恢复又分为冷备份和热备份。与逻辑备份相比,它最大优点是备份和恢复的速度更快。因为物理备份的原理都是基于文件的cp。 1.1 冷备份 冷备份就是停掉数据库服务。这种物理备份一般很少使用,因为很多应用是不允许长时间停机的。恢复操作大概是:首先停掉mysql服务, 在操作系统级别恢复m阅读全文

posted @ 2018-09-29 17:39 花阴偷移 阅读(391) | 评论 (1) 编辑

mysql 开发进阶篇系列 43 逻辑备份与恢复(mysqldump 的基于时间和位置的不完全恢复)
摘要: 一. 概述 在上篇讲到了逻辑备份,使用mysqldump工具来备份一个库,并使用完全恢复还原了数据库。在结尾也讲到了误操作是不能用完全恢复的。解决办法是:我们需要恢复到误操作之前的状态,然后跳过误操作语句。再恢复后面执行的语句,完成我们的恢复,这种恢复叫“不完全恢复”。在mysql 中,不完全恢复分阅读全文

posted @ 2018-09-26 17:50 花阴偷移 阅读(276) | 评论 (0) 编辑

mysql 开发进阶篇系列 42 逻辑备份与恢复(mysqldump 的完全恢复)
摘要: 一.概述 在作何数据库里,备份与恢复都是非常重要的。好的备份方法和备份策略将会使得数据库中的数据更加高效和安全。对于DBA来说,进行备份或恢复操作时要考虑的因素大概有如下: (1) 确定要备份的表的存储引擎是事务型(innodb)还是非事务型。两种不同的存储引擎备份方式在处理数据一致性方面是不太一样阅读全文

posted @ 2018-09-21 18:12 花阴偷移 阅读(283) | 评论 (0) 编辑

mysql 开发进阶篇系列 41 mysql日志之慢查询日志
摘要: 一.概述 慢查询日志记录了所有的超过sql语句( 超时参数long_query_time单位 秒),获得表锁定的时间不算作执行时间。慢日志默认写入到参数datadir(数据目录)指定的路径下。默认文件名是[hostname]_slow.log,默认超时是10秒,默认不开启慢查询日志。下面查看慢日志的阅读全文

posted @ 2018-09-13 17:51 花阴偷移 阅读(90) | 评论 (0) 编辑

mysql 开发进阶篇系列 40 mysql日志之二进制日志下以及查询日志
摘要: 一.binlog 二进制其它选项 在二进制日志记录了数据的变化过程,对于数据的完整性和安全性起着非常重要作用。在mysql中还提供了一些其它参数选项,来进行更小粒度的管理。 1.1 binlog-do-db=db_name 该选项告诉主服务器,当前db_name库会更新记录到二进制日志中,其它所有没阅读全文

posted @ 2018-09-11 17:55 花阴偷移 阅读(180) | 评论 (0) 编辑

mysql 开发进阶篇系列 39 mysql日志之二进制日志(binlog)
摘要: 一.概述 二进制日志(binlog)记录了所有的DDL(数据定义语言)语句和DML(数据操纵语言)语句,但是不包括数据查询语句, 语句以"事件"的形式保存,它描述了数据的更改过程,此日志对灾难时的数据恢复起着极其重要的作用。 1.1 日志的位置和格式 在my.cnf中可以查看log-bin的位置,m阅读全文

posted @ 2018-09-10 17:38 花阴偷移 阅读(89) | 评论 (0) 编辑

mysql 开发进阶篇系列 38 mysql日志之错误日志log-error
摘要: 一.mysql日志概述 在mysql中,有4种不同的日志,分别是错误日志,二进制日志(binlog日志),查询日志,慢查询日志。这此日志记录着数据库在不同方面的踪迹(区别sql server里只有errorlog日志,并借助了dmv来做分析)。接下来几篇里详细介绍这几种日志的作用和使用方法,利用这些阅读全文

posted @ 2018-09-06 16:09 花阴偷移 阅读(74) | 评论 (0) 编辑

mysql 开发进阶篇系列 37 工具篇 perror (错误代码查看工具)与总结
摘要: 一. perror 错误代码查看工具 在mysql 的使用过程中,可能会出现各种各样的error。这些error有些是由于操作系统引起的,比如文件或者目录不存在等等,使用perror的作用就是解释这些错误代码的详细含义。 perror 使用方法如下: 例如:指定错误号30和60分别是指什么错误 在M阅读全文

posted @ 2018-09-05 15:51 花阴偷移 阅读(71) | 评论 (0) 编辑

mysql 开发进阶篇系列 36 工具篇mysqlshow(数据库对象查看工具)
摘要: 一.概述 mysqlshow客户端查找工具,能很快地查找存在哪些数据库,数据库中的表,表中的列或索引,和mysql客户端工具很类似,不过有些特性是mysql客户端工具所不具备的。 mysqlshow的使用方法如下: 如果不加任何选项,默认情况下,会显示所有数据库,下面将显示当前mysql中所有数据库阅读全文

posted @ 2018-09-04 17:47 花阴偷移 阅读(84) | 评论 (0) 编辑

mysql 开发进阶篇系列 35 工具篇 mysqldump(数据导出工具)
摘要: 一.概述 mysqldump客户端工具是用来备份数据库或在不同数据库之间进行数据迁移。备份内容包含创建表或装载表的sql语句。mysqldump目前是mysql中最常用的备份工具。 三种方式来调用mysqldump,命令如下: 上图第一种是备份单个数据库或者库中部分数据表(从备份方式上,比sqlse阅读全文

posted @ 2018-09-03 17:45 花阴偷移 阅读(145) | 评论 (0) 编辑

mysql 开发进阶篇系列 34 工具篇 mysqlcheck(MyISAM表维护工具)
摘要: 一.概述 mysqlcheck客户端工具可以检查和修复MyISAM表,还可以优化和分析表。实际上,它集成了mysql工具中check,repair,analyze,optimize功能,对于check 则不支持MEMORY表, repair 则不支持 InnoDB表。mysqlcheck只有在数据库阅读全文

posted @ 2018-08-31 17:30 花阴偷移 阅读(69) | 评论 (0) 编辑

mysql 开发进阶篇系列 33 工具篇(mysqlbinlog日志管理工具)
摘要: 一.概述 由于服务器生成的二进制日志文件以二进制格式保存,所以如果要想检查这些文件的文本格式,就会用到mysqlbinlog日志管理工具。 mysqlbinlog的语法如下: mysqlbinlog [options] log-files log-files2... 其中options有很多选项,常阅读全文

posted @ 2018-08-30 17:31 花阴偷移 阅读(166) | 评论 (0) 编辑

mysql 开发进阶篇系列 32 工具篇(mysqladmin工具)
摘要: 一.概述 mysqladmin是一个执行管理操作的客户端程序。用来检要服务的配置和当前的状态,创建并删除数据库等。功能与mysql客户端类似,主要区别在于它更侧重于一些管理方面的功能。1. 查找mysqladmin工具 2 查看mysql 活动线程列表 3. 查看mysql 活动线程列表 每秒一次。阅读全文

posted @ 2018-08-29 17:39 花阴偷移 阅读(212) | 评论 (0) 编辑

mysql 开发进阶篇系列 31 工具篇(mysql连接工具与MyISAM表压缩工具)
摘要: 一.mysql 连接工具 在mysq提供的工具中,DBA使用最频繁的莫过于mysql。这里的mysql是指连接数据库的客户端工具。 1.1 连接选项 -u, -- user=name 指定用户名 -p ,--password[=name] 指定密码 -h ,--host=name 指定服务器IP或者阅读全文

posted @ 2018-08-28 17:58 花阴偷移 阅读(70) | 评论 (0) 编辑

mysql 开发进阶篇系列 30 数据库二进制包(安装指定路径,目录介绍)
摘要: 一. 指定路径 在上一篇里,二进制包解压后,全部放入在/usr/local/mysql目录下,在安装时指定了基础目录和数据目录, --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data 。 Linux是建议第三方软件放在/opt下。官网文阅读全文

posted @ 2018-08-27 17:44 花阴偷移 阅读(96) | 评论 (0) 编辑

mysql 开发进阶篇系列 29 数据库二进制包安装
摘要: 概述 对于二进制安装,优点是可以安装到任何路径下,灵活性好,一台服务器可以安装多个mysql。缺点是已经绎过编译,性能不如源码编译得好,不能灵活定制编译参数。如果用户即不想安装最简单却不够灵活的RPM包,又不想安装复杂费时的源码包,那么已编译好的二进制包将是最好的选择。 一.步骤1: 解压glib包阅读全文

posted @ 2018-08-24 17:49 花阴偷移 阅读(216) | 评论 (0) 编辑

mysql 开发进阶篇系列 28 数据库二进制包安装(带Linux系统安装)
摘要: 1. centos 7安装工作 对于mysql二进制安装,我这里在使用一台新的centos系统。准备好VMware,Xftp-6.0, Xshell-6.0。在VMware中网络使用桥接模式,分配20G硬盘,1个处理器4个内核。进入centos安装界面后选择中文,时区上海,配置分区/boot 250阅读全文

posted @ 2018-08-23 18:07 花阴偷移 阅读(64) | 评论 (0) 编辑

mysql 开发进阶篇系列 27 数据库字符集设置
摘要: 在安装完数据库后,使用汉字插入到表中,会报错,需要修改字符集类型,如下图所示: 如下图所示: character_set_database=iatin1 需要改成utf8或gbk 打开my.cnf文件,修改参数,再重启 重启后,再查看SHOW VARIABLES LIKE 'character%'。阅读全文

posted @ 2018-08-22 17:17 花阴偷移 阅读(52) | 评论 (0) 编辑

mysql 开发进阶篇系列 26 数据库RPM安装演示
摘要: 一.概述 上一章讲到了RPM安装后的文件目录,这章还是介绍下安装步骤。也便以后做参考吧。 1. 移出centos 7系统自带的mysql库 2. 将下载的mysql包放到/home/hsr/tool 目录下(mysql-5.7.20-1.el7.x86_64.rpm-bundle.tar) 3. 解阅读全文

posted @ 2018-08-21 17:33 花阴偷移 阅读(55) | 评论 (0) 编辑

mysql 开发进阶篇系列 25 数据库RPM安装目录介绍
摘要: 一.概述 mysql可以在多个平台上运行,在windows平台上安装有noinstall包和图形化包二种方式。在linux/unix平台上有RPM包安装,二进制包(Binary Package)安装,源码包(Source package)安装。 对于RPM包的最大优点是安装简单,适合初学者学习使用,阅读全文

posted @ 2018-08-20 17:56 花阴偷移 阅读(85) | 评论 (0) 编辑

mysql 开发进阶篇系列 24 查询缓存下
摘要: 一. 查询缓存 1.开启缓存 设置了缓存开启,缓存最大限制128M,重启服务后,再次查询 2 测试缓存 现在是缓存2次,命中一次 上面是二个查询sql语句,此时缓存数是4,如下图所示: 此时缓存数是6,说明缓存区分where条件值的大小写。同样也会区分sql关键词的大小写。如下图所示: 设置好que阅读全文

posted @ 2018-08-17 11:05 花阴偷移 阅读(119) | 评论 (0) 编辑

mysql 开发进阶篇系列 23 应用层优化与查询缓存
摘要: 一.概述 前面章节介绍了很多数据库的优化措施,但在实际生产环境中,由于数据库服务器本身的性能局限,就必须要对前台的应用来进行优化,使得前台访问数据库的压力能够减到最小。 1. 使用连接池 对于访问数据库来说,建立连接的代价比较昂贵,因为连接到数据库服务器需要经历多个步骤如:建立物理通道,服务器进行初阅读全文

posted @ 2018-08-16 17:44 花阴偷移 阅读(277) | 评论 (0) 编辑

mysql 开发进阶篇系列 22 磁盘I/O问题(从linux操作系统上优化)
摘要: 1. 使用Symbolic Links分布I/O mysql的数据库名和表名是与文件系统的目录名和文件名对应的,默认情况下,创建的数据库和表都存放在参数datadir定义的目录下。如果不使用RAID或逻辑卷,所有的表都放在一个磁盘设置上,无法发挥多磁盘并行读写的优势。这种情况,我们可以利用操作系统的阅读全文

posted @ 2018-08-15 18:24 花阴偷移 阅读(119) | 评论 (0) 编辑

mysql 开发进阶篇系列 21 磁盘I/O问题(RAID)
摘要: 一.概述 作为应用系统的持久化层,不管数据库采取了什么样的Cache机制,数据库最终总是要将数据储存到可以长久保存的I/O设备磁盘上。但磁盘的存取速度显然要比cpu,ram的速度慢很多。因此,对于比较大的数据库,磁盘I/0 一般总会总为数据库的一个性能瓶颈。 ram:又称作“随机存储器”,是与CPU阅读全文

posted @ 2018-08-14 18:20 花阴偷移 阅读(123) | 评论 (0) 编辑

mysql 开发进阶篇系列 20 MySQL Server(innodb_lock_wait_timeout,innodb_support_xa,innodb _log_*)
摘要: 1. innodb_lock_wait_timeout mysql 可以自动监测行锁导致的死锁并进行相应的处理,但是对于表锁导致的死锁不能自动监测,所以该参数主要用于,出现类似情况的时候等待指定的时间后回滚。系统默认值是50秒。用户可以根据业务自行设置。生产环境不推荐使用过大的 innodb_loc阅读全文

posted @ 2018-08-13 18:38 花阴偷移 阅读(111) | 评论 (0) 编辑

mysql 开发进阶篇系列 19 MySQL Server(innodb_flush_log_at_trx_commit与sync_binlog)
摘要: 一. innodb_flush_log_at_trx_commit 是指:ib_logfile的刷新方式( ib_logfile:记录的是redo log和undo log的信息,是重做日志写入磁盘的过程。用来控制缓冲区中的数据写入到日志文件,以及日志文件数据刷新到磁盘(flush)的操作时机。对这阅读全文

posted @ 2018-08-10 17:56 花阴偷移 阅读(131) | 评论 (2) 编辑

mysql 开发进阶篇系列 18 MySQL Server(innodb_buffer_pool_size)
摘要: 从这篇开始,讲innodb存储引擎中,对于几个重要的服务器参数配置。这些参数以innodb_xx 开头。 1. innodb_buffer_pool_size的设置 这个参数定义了innodb存储引擎的表数据和索引数据的最大内存缓冲区大小,和myisam不同,myisam的key_buffer_si阅读全文

posted @ 2018-08-09 17:41 花阴偷移 阅读(147) | 评论 (1) 编辑

mysql 开发进阶篇系列 17 MySQL Server(key_buffer与table_cache)
摘要: 一.key_buffer 上一篇了解key_buffer设置,key_buffer_size指定了索引缓冲区的大小,它决定索引处理的速度,尤其是索引读的速度。通过检查状态值Key_read_requests和Key_reads,可以知道key_buffer_size设置是否合理。比例key_read阅读全文

posted @ 2018-08-08 17:38 花阴偷移 阅读(113) | 评论 (0) 编辑

mysql 开发进阶篇系列 16 MySQL Server(myisam key_buffer)
摘要: 一.概述 mysql 提供了很多参数来进行服务器的设置,当服务第一次启动的时候,所有启动参数值都是系统默认的。这些参数在很多生产环境下并不能满足实际的应用需求。在这个系列中涉及到了linux 服务器,我这里是centos7.4, mysql 5.7,Xshell6。 1. 查看mysql serve阅读全文

posted @ 2018-08-07 17:27 花阴偷移 阅读(89) | 评论 (0) 编辑

mysql 开发进阶篇系列 15 锁问题 (总结)
摘要: 1. innodb 行锁是基于索引实现的,如果不通过索引访问数据,innodb会使用表锁。 http://www.cnblogs.com/MrHSR/p/9376086.html 2. Innodb 间隙锁(Next-key)机制,以及innodb使用间隙锁的原因 http://www.cnblog阅读全文

posted @ 2018-08-06 17:49 花阴偷移 阅读(83) | 评论 (0) 编辑

mysql 开发进阶篇系列 14 锁问题(避免死锁,死锁查看分析)
摘要: 一. 概述 通常来说,死锁都是应用设计问题,通过调整业务流程,数据库对象设计,事务大小,以及访问数据库的sql语句,绝大部分死锁都可以避免,下面介绍几种避免死锁的常用方法: 1. 在应用中,如果不同的程序并发操作多个表,应尽量约定以相同的顺序来访问表,这样可以大大降低产生死锁的机会。按顺序对表进行操阅读全文

posted @ 2018-08-04 17:25 花阴偷移 阅读(91) | 评论 (0) 编辑

mysql 开发进阶篇系列 13 锁问题(关于表锁,死锁示例,锁等待设置)
摘要: 一. 什么时候使用表锁 对于INNODB表,在绝大部分情况下都应该使用行锁。在个别特殊事务中,可以考虑使用表锁(建议)。 1. 事务需要更新大部份或全部数据,表又比较大,默认的行锁不仅使这个事务执行效率低,可能造成其他事务长时间锁等待和锁冲突,这种情况考虑使用表锁来提高事务的执行速度(具我在sql 阅读全文

posted @ 2018-08-02 18:39 花阴偷移 阅读(136) | 评论 (1) 编辑

mysql 开发进阶篇系列 12 锁问题(隔离级别下锁的差异)
摘要: 1. innodb在不同隔离级别下的一致性读及锁的差异 不同的隔离级别下,innodb处理sql 时采用的一致性读策略和需要的锁是不同的,同时,数据恢复和复制机制的特点,也对一些sql的一致性读策略和锁策略有很大影响。对于许多sql, 隔离级别越高,innodb给记录集的锁就越严格(龙其是使用范围条阅读全文

posted @ 2018-08-01 18:50 花阴偷移 阅读(74) | 评论 (0) 编辑

mysql 开发进阶篇系列 11 锁问题 (恢复和复制的需要,对锁机制的影响)
摘要: 1. 恢复和复制的需要,对innodb锁机制的影响 mysql 通过binlog文件对增删改等更新数据的sql语句,实现数据库的恢复和主从复制。mysql的恢复机制(复制其实就是在slave mysql不断做基于binglog的恢复)特点有如下: (1) mysql 的恢复是sql语句级的,也就是重阅读全文

posted @ 2018-07-31 20:18 花阴偷移 阅读(77) | 评论 (0) 编辑

mysql 开发进阶篇系列 10 锁问题 (使用“索引或间隙锁”的锁冲突)
摘要: 1.使用“相同索引键值”的冲突 由于mysql 的行锁是针对索引加的锁,不是针对记录加的锁,所以虽然是访问不同行的记录,但如果是使用相同的索引键,是会出现锁冲突的。设计时要注意 例如:city表city_id字段有索引,Cityname字段没有索引: 会话1 会话2 SET autocommit=0阅读全文

posted @ 2018-07-30 14:20 花阴偷移 阅读(222) | 评论 (0) 编辑

mysql 开发进阶篇系列 9 锁问题 (Innodb 行锁实现方式)重点篇
摘要: 一.概述 Innodb 行锁是通过给索引上的"索引项"加锁来实现的。这一点与(oracle,sql server)不同后者是通过在数据块中对相应的数据行加锁。这意味着只有通过索引条件检索数据,innodb才使用行级锁,否则 innodb将使用表锁。 在实际应用中,特别要注意innodb行锁的这一特性阅读全文

posted @ 2018-07-27 10:30 花阴偷移 阅读(110) | 评论 (0) 编辑

mysql 开发进阶篇系列 8 锁问题 (共享锁与排它锁演示)
摘要: 1 .innodb 共享锁(lock in share mode)演示 SET autocommit=0是指:当前session禁用自动提交事务,需要显示 commit 才能提交事务。默认是autocommit=1 隐式提交事务。如果想控制何时提交或回滚,常用是START TRANSACTION(或阅读全文

posted @ 2018-07-26 18:33 花阴偷移 阅读(114) | 评论 (0) 编辑

mysql 开发进阶篇系列 7 锁问题(innodb锁争用情况及锁模式)
摘要: 1 .获取innodb行锁争用情况 1.1 通过检查innodb_row_lock状态变量来分析系统上的行锁的争夺情况 通过innodb_row_lock_waits 和 innodb_row_lock_avg 的值来判断行锁争用情况,值高意味着争用比较严重。 1.2 通过检查 innodb mon阅读全文

posted @ 2018-07-24 16:36 花阴偷移 阅读(138) | 评论 (0) 编辑

mysql 开发进阶篇系列 6 锁问题(事务与隔离级别介绍)
摘要: 一.概述 在数据库中,数据是属于共享资源,为了保证并发访问的一致性,有效性,产生了锁。接下来重点讨论mysql锁机制的特点,常见的锁问题,以及解决mysql锁问题的一些方法或建议。 相比其他数据库,mysql 锁机制比较简单,显著的特点是:不同的存储引擎支持不同的锁机制。在innodb中支持行锁和表阅读全文

posted @ 2018-07-23 17:28 花阴偷移 阅读(152) | 评论 (0) 编辑

mysql 开发进阶篇系列 5 SQL 优化(表优化)
摘要: 一. 使用sql提示 sql 提示(sql hint)是优化数据库的一个重要手段, 是在sql语句中加入一些人为的提示来达到优化操作的目的。 1.1 use index 在查询语句中表名的后面,添加use index 强制mysql使用该索引,不考虑其它索引。 1.2 ignore index 在查阅读全文

posted @ 2018-07-23 11:57 花阴偷移 阅读(113) | 评论 (0) 编辑

mysql 开发进阶篇系列 4 SQL 优化(各种优化方法点)
摘要: 1 通过handler_read 查看索引使用情况 如果索引经常被用到 那么handler_read_key的值将很高,这个值代表了一个行被索引值读的次数, 很低的值表明增加索引得到的性能改善不高,索引并不经常使用。 handler_read_rnd_next 的值高 则意味着查询运行低效,应该建立阅读全文

posted @ 2018-07-20 17:40 花阴偷移 阅读(116) | 评论 (0) 编辑

mysql 开发进阶篇系列 3 SQL 优化(索引使用方法)
摘要: 一. 本章介绍mysql中的索引的分类,存储,使用方法的介绍 1. 索引的存储分类 MyISAM存储引擎的表的数据和索引是自动分开存储的,各自是独立的一个文件, innodb 存储引擎的表的数据和索引是存储在同一个表空间里面,可以有多个文件组成。 MyISAM和Innodb存储引擎都支持btree索阅读全文

posted @ 2018-07-19 13:48 花阴偷移 阅读(151) | 评论 (0) 编辑

mysql 开发进阶篇系列 2 SQL优化(explain分析)
摘要: 接着上一篇sql优化来说 1. 定位执行效率较低的sql 语句 通过两种方式可以定位出效率较低的sql 语句。 (1) 通过上篇讲的慢日志定位,在mysqld里写一个包含所有执行时间超过 long_query_time秒的sql语句的日志文件,后面具体介绍。 (2) 通过show processli阅读全文

posted @ 2018-07-18 14:07 花阴偷移 阅读(200) | 评论 (0) 编辑

mysql 开发进阶篇系列 1 SQL优化(show status命令)
摘要: 一.概述 随着上线后,数据越来越多,很多sql语句开始显露出性能问题,本章介绍在mysql中优化sql语句的方法。 1. 通过show status 命令了解各种sql的执行频率 通过show [session | global] 命令可以提供服务器状态信息,也可以在操作系统上使用mysqladmi阅读全文

posted @ 2018-07-17 15:09 花阴偷移 阅读(218) | 评论 (0) 编辑