mysql 开发进阶篇系列 23 应用层优化与查询缓存
一.概述 前面章节介绍了很多数据库的优化措施,但在实际生产环境中,由于数据库服务器本身的性能局限,就必须要对前台的应用来进行优化,使得前台访问数据库的压力能够减到最小。1. 使用连接池对于访问数据库来说,建立连接的代价比较昂贵,因为连接到数据库服务器需要经历多个步骤如:建立物理通道,服务器进行初次握...
mysql 开发进阶篇系列 54 权限与安全(账号管理的各种权限操作 下)
1. 查看权限 -- 如果host值不是%, 就要加上host值,下面查看bkpuser用户权限(6个权限, 限本地连接)SHOW GRANTS FOR bkpuser@localhost; -- 如果host值是%, 就只要输入用户名,下面查看z1用户权限(显示所有权限,不限ip连接)...
mysql 开发进阶篇系列 38 mysql日志之错误日志log-error
一.mysql日志概述 在mysql中,有4种不同的日志,分别是错误日志,二进制日志(binlog日志),查询日志,慢查询日志。这此日志记录着数据库在不同方面的踪迹(区别sql server里只有errorlog日志,并借助了dmv来做分析)。接下来几篇里详细介绍这几种日志的作用和使用方法,利用这些...
mysql 开发进阶篇系列 7 锁问题(innodb锁争用情况及锁模式)
1 .获取innodb行锁争用情况 1.1 通过检查innodb_row_lock状态变量来分析系统上的行锁的争夺情况 SHOW STATUS LIKE 'innodb_row_lock%' 通过innodb_row_lock_waits 和 innodb_row_lock_avg 的值来判...
mysql 开发进阶篇系列 53 权限与安全(账号管理的各种权限操作 上)
一. 概述 在了解前两篇的权限系统介绍后,这篇继续讲账号的管理,这些管理包括账号的创建,权限更改,账号删除等。用户连接数据库的第一步都是从账号创建开始。 1. 创建账号 有两种方法可以用来授权账号:(1) 是使用grant来授权账号,(2) 是直接操作权限表。 使用grant操作简单,出错率更少。...
mysql 开发进阶篇系列 34 工具篇 mysqlcheck(MyISAM表维护工具)
一.概述 mysqlcheck客户端工具可以检查和修复MyISAM表,还可以优化和分析表。实际上,它集成了mysql工具中check,repair,analyze,optimize功能,对于check 则不支持MEMORY表, repair 则不支持 InnoDB表。mysqlch...
mysql 开发进阶篇系列 31 工具篇(mysql连接工具与MyISAM表压缩工具)
一.mysql 连接工具 在mysq提供的工具中,DBA使用最频繁的莫过于mysql。这里的mysql是指连接数据库的客户端工具。 1.1 连接选项 -u, -- user=name 指定用户名 -p ,--password[=name] 指定密码 -h ,--host=name 指定服务器IP或...
mysql 开发进阶篇系列 39 mysql日志之二进制日志(binlog)
一.概述 二进制日志(binlog)记录了所有的DDL(数据定义语言)语句和DML(数据操纵语言)语句,但是不包括数据查询语句, 语句以"事件"的形式保存,它描述了数据的更改过程,此日志对灾难时的数据恢复起着极其重要的作用。 1.1 日志的位置和格式在my.cnf中可以查看log-...
mysql 开发进阶篇系列 22 磁盘I/O问题(从linux操作系统上优化)
1. 使用Symbolic Links分布I/O mysql的数据库名和表名是与文件系统的目录名和文件名对应的,默认情况下,创建的数据库和表都存放在参数datadir定义的目录下。如果不使用RAID或逻辑卷,所有的表都放在一个磁盘设置上,无法发挥多磁盘并行读写的优势。这种情况,我们...
mysql 开发进阶篇系列 33 工具篇(mysqlbinlog日志管理工具)
一.概述 由于服务器生成的二进制日志文件以二进制格式保存,所以如果要想检查这些文件的文本格式,就会用到mysqlbinlog日志管理工具。mysqlbinlog的语法如下:mysqlbinlog [options] log-files log-files2... 其中options...
mysql 开发进阶篇系列 36 工具篇mysqlshow(数据库对象查看工具)
一.概述 mysqlshow客户端查找工具,能很快地查找存在哪些数据库,数据库中的表,表中的列或索引,和mysql客户端工具很类似,不过有些特性是mysql客户端工具所不具备的。mysqlshow的使用方法如下: 如果不加任何选项,默认情况下,会显示所有数据库,下面将显示当前mysql中所有数据库。...
mysql 开发进阶篇系列 2 SQL优化(explain分析)
接着上一篇sql优化来说 1. 定位执行效率较低的sql 语句 通过两种方式可以定位出效率较低的sql 语句。(1) 通过上篇讲的慢日志定位,在mysqld里写一个包含所有执行时间超过 long_query_time秒的sql语句的日志文件,后面具体介绍。(2) 通过show processli...
mysql 开发进阶篇系列 48 物理备份与恢复(xtrabackup 的增量备份与恢复,以及备份总结)
一.增量备份概述 xtrabackup 和innobackupex 二个工具都支持增量备份,这意味着能复制自上次备份以来更改的数据。可以在每个完整备份之间执行许多增量备份,因此,您可以设置一个备份过程,例如每周一次完整备份和每天一次增量备份,或者每天一次完整备份和每小时一次增量备份。对于定期自动...
mysql 开发进阶篇系列 18 MySQL Server(innodb_buffer_pool_size)
从这篇开始,讲innodb存储引擎中,对于几个重要的服务器参数配置。这些参数以innodb_xx 开头。 1. innodb_buffer_pool_size的设置 这个参数定义了innodb存储引擎的表数据和索引数据的最大内存缓冲区大小,和myisam不同,myisam的key_...
mysql 开发进阶篇系列 35 工具篇 mysqldump(数据导出工具)
一.概述 mysqldump客户端工具是用来备份数据库或在不同数据库之间进行数据迁移。备份内容包含创建表或装载表的sql语句。mysqldump目前是mysql中最常用的备份工具。三种方式来调用mysqldump,命令如下:上图第一种是备份单个数据库或者库中部分数据表(从备份方式上,比sqlserv...
mysql 开发进阶篇系列 9 锁问题 (Innodb 行锁实现方式)
一.概述 Innodb 行锁是通过给索引上的索引项加锁来实现的。这一点与(oracle,sql server)不同后者是通过在数据块中对相应的数据行加锁。这意味着只有通过索引条件检索数据,innodb才使用行级锁,否则 innodb将使用表锁。 在实际应用中,特别要注意innodb行锁的这一特性,不...
mysql 开发进阶篇系列 41 mysql日志之慢查询日志
一.概述 慢查询日志记录了所有的超过sql语句( 超时参数long_query_time单位 秒),获得表锁定的时间不算作执行时间。慢日志默认写入到参数datadir(数据目录)指定的路径下。默认文件名是[hostname]_slow.log,默认超时是10秒,默认不开启慢查询日志...
mysql 开发进阶篇系列 12 锁问题(隔离级别下锁的差异)
1. innodb在不同隔离级别下的一致性读及锁的差异 不同的隔离级别下,innodb处理sql 时采用的一致性读策略和需要的锁是不同的,同时,数据恢复和复制机制的特点,也对一些sql的一致性读策略和锁策略有很大影响。对于许多sql, 隔离级别越高,innodb给记录集的锁就越严格(龙其是使用范围条...
mysql 开发进阶篇系列 15 锁问题 (总结)
1. innodb 行锁是基于索引实现的,如果不通过索引访问数据,innodb会使用表锁。 http://www.cnblogs.com/MrHSR/p/9376086.html 2. Innodb 间隙锁(Next-key)机制,以及innodb使用间隙锁的原因 http://www.cn...
mysql 开发进阶篇系列 10 锁问题 (相同索引键值或同一行或间隙锁的冲突)
1.使用相同索引键值的冲突 由于mysql 的行锁是针对索引加的锁,不是针对记录加的锁,所以虽然是访问不同行的记录,但如果是使用相同的索引键,是会出现锁冲突的。设计时要注意例如:city表city_id字段有索引,Cityname字段没有索引: 会话1 会话2 SET autoc...