随笔分类 -  mysql

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

posted @ 2018-08-14 18:20 花阴偷移 阅读(440) 评论(0) 推荐(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 花阴偷移 阅读(544) 评论(0) 推荐(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 花阴偷移 阅读(584) 评论(2) 推荐(1) 编辑

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 花阴偷移 阅读(597) 评论(1) 推荐(0) 编辑

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 花阴偷移 阅读(552) 评论(0) 推荐(1) 编辑

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

posted @ 2018-08-07 17:27 花阴偷移 阅读(426) 评论(0) 推荐(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 花阴偷移 阅读(349) 评论(0) 推荐(0) 编辑

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

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

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

posted @ 2018-08-02 18:39 花阴偷移 阅读(527) 评论(1) 推荐(0) 编辑

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

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

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

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

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

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

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

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

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

posted @ 2018-07-26 18:33 花阴偷移 阅读(435) 评论(0) 推荐(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 花阴偷移 阅读(578) 评论(0) 推荐(0) 编辑

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

posted @ 2018-07-23 17:28 花阴偷移 阅读(506) 评论(1) 推荐(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 花阴偷移 阅读(514) 评论(0) 推荐(0) 编辑

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

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

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

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

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

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

导航

点击右上角即可分享
微信分享提示