innodb以前不支持高并发,在搞病房下就是悲剧,全部卡在mutex(缓冲池mutex)上,现在通过线程调度器控制线程怎么进入内核访问数据,参数为innodb_thread_concurrency,它有计算公式:CPU数量*磁盘数量*2。

如果无法进入内核会休眠innodb_thread_sleep_delay微妙。还有一个参数成为高并发瓶颈:innodb_commit_concurrency,就是提交的时候,如果设置太小,容易导致大量线程冲突,最后通过线程池(经验值:thread_pool_size线程组数量,默认16,建议16-36,最好24-36,值的范围1-64,线程组数量跟cpu相当。thread_pool_stall_limit意思是这个SQL占用多长时间,该让给其他人,较低的值允许线程更快启动起来,避免死锁,较高的值适合长时间运行的SQL语句)限制并发。

myisam设置concurrent_insert(0不允许,1允许默认值,只有表中没有空洞,2强制并发插入到表的尾末尾)是否允许并发插入。

如果查询涉及到blob或者text值,又需要使用临时表,不管多小,都会在磁盘上创建临时表,这样效率很低,但是通过substring函数转为varchar,或者让临时表更快一些(基于内存的文件系统,在Linux上是tmpfs),或者调大innodb日志缓冲大小。

影响MySQL排序的两个值(max_length_for_sort_data为每行排序数据创建固定大小的缓冲跟定义的最大长度比较和max_sort_length必须用blob和text排序的时候,只使用前缀)。

数据库服务器基本配置:tmp_table_size,max_heap_table_size,max_connections,thread_cache_size,table_cache_size。安全和稳定的设置:expire_logs_days,max_allowed_packet,max_connect_errors,sql_mode,sysdate_IS_now。

下面的选项控制负责复制行为,防止备库出问题:read_only,skip_slave_start,slave_net_timeout,sync_master_info,sync_relay_log,sync_relay_log_info。innodb高级配置:innodb_buffer_pool_instances,innodb_autoinc_lock_mode,innodb_io_capacity,innodb_read_io_threads,innodb_write_io_threads,innodb-strict_mode。但是最重要是:innodb_buffer_pool_size和innodb_log_file_size。

顺序io比随机io快。

MySQL复制流程:在主库上把数据更改记录到二进制日志(binary log)中,备库将主库上的日志复制到自己的中继日志(relay log)中,使用的是io线程,备库读取中继日志中的事件,将其重放到备库数据库中,使用的是SQL线程,实现获取事件和回放事件解藕,允许两个线程异步进行,但是在主库上并发运行的查询,在备库上只能串行执行,因为只有一个SQL线程重放中继日志事件。基于行的复制优于基于语句的复制。复制拓扑中的主动-被动模式下的主-主复制比较好用,执行alter table可能锁住整个表,阻塞对表的读和写,但是在主-主配置下,可以先停止主动服务器上的备库复制线程(这样就不会在被动服务器上执行任何更新),然后在被动服务器上执行。alter操作,交换角色,最后在主动服务器上启动复制线程,这个服务器读取中继日志并执行alter语句,这可能花费很长时间,但是不要紧,因为该服务器没有为任何活跃查询提供服务。

怎么配置:1确保两台服务器有相同数据,2启用二进制日志,选择唯一的服务器ID 并,创建复制账号,3启用备库更新的日志记录,后面会看到,这是故障转移和故障恢复的关键,4把被动服务器配置成。只读,防止可能与主动服务器上的更新产生冲突,这一点可选,5启动每个服务器的MySQL实例,6将每个主库设置为对方的备库,使用新创建的二进制日志开始工作。还有一种复制拓扑叫拥有备库的主主复制,优点是增加了冗余,对应不同地理位置的复制拓扑,能够消除站点单点失效的问题,像往常一样将读查询分配到备库上,当主库失效时,备库代替主库还是可行的,或者把备库指向一个不同的主库,但是有点复杂。

系统变量show variables,服务器变量的名字和值show status(二进制日志binlog_cache_use和binlog_cache_disk_use,临时表和文件的计数show global temporary tables;show status like 'creat%';,排序sort,table_locks_immediate和table_locks_waited)。大文件传输:gzip -c /backup/mydb/mytable.MYD | ssh root@server2 "gunzip -c - /var/lib/mytable.MYD",也可以在gzip上增加选项-l,使其压缩更快,如果想获得更高的压缩率而且速度很快用bzip代替gzip。如果不需要加密,可以使用nc代替ssh,还有其他复制方式如rsync。

 
 

高性能mysql第三版读书笔记3的更多相关文章

  1. Linux设备驱动程序 第三版 读书笔记(一)

    Linux设备驱动程序 第三版 读书笔记(一) Bob Zhang 2017.08.25 编写基本的Hello World模块 #include <linux/init.h> #inclu ...

  2. effective java(第三版)---读书笔记

    第一章 引言 < Effective Java>这本书并不厚,而且并不适合初学者,适合有一定的工作经验的java攻城狮.这本书不是百科全书式的JAVA 手册,而是试图在讲述如何正确.高效地 ...

  3. javaScript高程第三版读书笔记

    看完<dom编程艺术>现在准备读进阶版的js高程了,由于篇幅较长,所以利用刚看完<dom编程艺术>学到的知识写了段JavaScript代码,来折叠各章的内容.并且应用到了< ...

  4. 《ECMAScript6标准入门》第三版--读书笔记

    2015年6月,ECMAScript 6正式通过,成为国际标准.尽管在目前的工作中还没有使用ES6,但是每项新技术出来总是忍不住想尝尝鲜,想知道ES6能为前端开发带来哪些变化?对自己的工作有哪些方面可 ...

  5. 高性能mysql第三版(文摘)

    第1章 mysql架构与历史 1.1处理和存储相分离,用户可以选择合适的存储引擎 1.2并发控制 表锁:开销小 行级锁:开销大 1.3事务 acid特性:原子性,一致性,隔离性,持久性 1.4 多版本 ...

  6. JavaScript高级程序设计第三版-读书笔记(1-3章)

    这是我第一次用markdown,也是我第一次在网上记录我自己的学习过程. 第一章 JavaScript主要由以下三个不同的部分构成 ECMAScript   提供核心语言功能 DOM     提供访问 ...

  7. CSS权威指南-第三版--读书笔记

    第一章:CSS和文档 html是结构化语言,css是样式语言,html主要用来被强大的搜索引擎更好的索引,更好的让一个盲人通过语音浏览器来了解我们的网页,这也就是为什么说html是结构话语言,因为这是 ...

  8. CLR.via.C#第三版 读书笔记

    第一章 CLR的执行模型 1.1将源代码编译成托管代码 决定将.NET Framework作为自己的开发平台之后,第一步是决定要生成什么类型的应用程序或组件.假定你已经完成了这些次要的细节:一切都已经 ...

  9. 9Andrew.S.Tanenbaum计算机网络第三版读书笔记-总体概览

随机推荐

  1. 聊聊Disruptor 和 Aeron 这两个开源库

    Disruptor The best way to understand what the Disruptor is, is to compare it to something well under ...

  2. go开发包下载,IDE工具下载,基础配置命令

    目录 go语言介绍 go开发包下载 命令介绍 配置 修改配置 golandIDE工具下载 编译并执行命令 命令 go语言介绍 # 1 诞生于 2009年,10年的时间,非常新的语言,天然支持并发,很新 ...

  3. Sprint1规划暨first stand up meeting

    实际上,我们关于工程分配和接口实现的讨论已经好几周了,队(shen)长(xian)大人三令五申,先把接口确定下来,数据格式很重要云云~顺便accent一下,utf-8[虽然我并不太明白为什么要这么干但 ...

  4. 【jmeter】JDBC请求循环调用的问题

    今天使用jdbc请求从数据库取数据,多次请求使用了循环控制器,但是结果第一个jdbc请求返回值正确,第二次请求返回值为空. 1.从其他博客中得知,需要在jdbc connection configur ...

  5. GCD - Extreme (II) UVA - 11426 欧拉函数与gcd

    题目大意: 累加从1到n,任意两个数的gcd(i,j)(1=<i<n&&i<j<=n). 题解:假设a<b,如果gcd(a,b)=c.则gcd(a/c,b ...

  6. 微信小程序之base64图片如何预览与一键保存到本地相册?

    需求:由于后台服务器各方面的限制,现在服务器返回的图片是base64格式的,小程序端需要支持预览图片和多个图片一键下载功能 一.如何预览base64位图片? WXML页面:item.src的值是bas ...

  7. [php代码审计]bluecms v1.6 sp1

    一.环境搭建 bluecms v1.6 sp1源码 windows 7 phpstudy2016(php 5.4.45) seay源代码审计系统 源码在网上很容易下载,很多教程说访问地址 http:/ ...

  8. C# 基础知识系列- 13 常见类库介绍(二)日期时间类

    0. 前言 上一篇内容介绍了Console类和Math类,这篇内容着重介绍一下C#中时间日期的处理方式. 上一篇勘误: 上一篇中关于静态类没有构造函数,这一表述有误.正确的说法是C#中静态类不包含常规 ...

  9. Web前端三大主流框架是什么?Web前端前景与就业形势

    近十年以来,IT行业发展火热,衍生了很多新职业,例如UI设计师.开发工程师.软件测试工程师等等,在众多备受瞩目的新生职业中,Web前端工程师是其中的一员.那么Web前端三大主流框架是什么呢? 一.We ...

  10. ES6新增的Map和WeakMap 又是什么玩意?非常详细的解释

    上一篇文章讲了set和weakSet,这节咱就讲Map和weakMap是什么?这两篇文章并没有什么联系,主要知识用法类似而已.嘿嘿,是不是感觉舒服多了. 什么是Map 介绍什么是Map,就不得不说起O ...