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. JUC并发编程基石AQS源码之结构篇

    前言 AQS(AbstractQueuedSynchronizer)算是JUC包中最重要的一个类了,如果你想了解JUC提供的并发编程工具类的代码逻辑,这个类绝对是你绕不过的.我相信如果你是第一次看AQ ...

  2. 利用浏览器的console篡改cookie

    背景: 最近公司有个客户问题,是由于浏览器的cookie中多记录过期的session id导致重复登录,普通操作无法复现,因此尝试进行cookie篡改复现问题. 方法: 首先,要知道软件定义的sess ...

  3. G - Can you find it? 二分

    Give you three sequences of numbers A, B, C, then we give you a number X. Now you need to calculate ...

  4. mysql创建存储过程及调用

    创建存储过程简单示例: DELIMITER //CREATE PROCEDURE ccgc()BEGINSELECT * FROM TEXT;SELECT * FROM s_user;END//DEL ...

  5. 如何在Ubuntu 18.04上安装Nginx

    Nginx功能之强大,想必大家比我更清楚. 百度百科:Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务.Nginx是由伊戈尔 ...

  6. 详解 Collections类

    (请关注 本人"集合总集篇"博文--<详解 集合框架>) 有的同学可能会有这样的疑问 -- Collections类也是集合吗? 答曰:非也! 那为什么要讲解这个类呢? ...

  7. Springboot:属性常量赋值以及yml配置文件语法(四)

    方式一: 注解赋值 构建javaBean:com\springboot\vo\Dog 1:@Component:注册bean到spring容器中 2:添加get set toString方法 3:使用 ...

  8. sql注入 pikachu

    闭合条件的探测 数字型注入 burp抓包 分别测试 id=1 and 1=1和id=1 or 1=1 存在漏洞 字符型注入 ' 报错 探测闭合条件 ' order by 1# 未报错.构成闭合 同上有 ...

  9. [Windows] Diskpart Scripts and Examples

    https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/diskpart-scripts-and ...

  10. 牛客网练习赛61 A+B

    A.打怪 思路:先判定当小怪的攻击力为0时,你能杀无数只怪,因为小怪A不动你,然后再计算每个小怪最多能给你造成多少伤害(用小怪的血量除以你的攻击力,也就是你砍它几下它会死,你先手,所以小怪肯定比你少砍 ...