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. python3购物车

    python3实现购物车小程序,优化后将程序分成函数,用文件注册和验证用户名密码. #!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 20 ...

  2. Windows DC域控由server08r2升级至server2016测试

    测试环境 原DC: csctest.com CSCDC01 192.168.100.1 server08r2 CSCDC02 192.168.100.2 server08r2 要求: 原两台旧主机均更 ...

  3. 常见web漏洞整理之进击吧xss!!!

    XSS在线测试环境: http://xss-quiz.int21h.jp/ https://brutelogic.com.br/xss.php 这两个站对xss的理解很有帮助!!! 参考链接: htt ...

  4. [linux] 小问题:管道符,换行问题等;[nginx]启动,重启,关闭命令;以及升级nginx切换命令

    Lniux换行问题 后面回车不会马上执行本条命令而是换行继续. : 是运行完前面就继续后面的, && 同样是前面正确就运行后面, || 是前面运行不正确就运行后面. | 管道符“|”将 ...

  5. [YII2] 修改默认控制器Controller以及默认方法Action

    试了好多方法都没成功,下面方法绝对能成功设置 在框架里面有源码,在/vendor/yiisoft/yii2/web/Application.php的第34行找到了: class Application ...

  6. 爬虫与反爬相生相克,道高一丈魔高一尺,如何隐藏ID(附代码)

    Python 反爬篇之 ID 混淆 作为爬虫的一方,如果知道了某个站点的数据自增 ID,那么就能轻而易举把整个站点都爬下来. 是不是有点耸人听闻,你去看很多大站例如油管.P 站等,他们都不会轻易把业务 ...

  7. s2h-HTTP Status 404 - No result defined for action and result input错误解决

    今天做个小项目,用的是ssh,结果在运行的时候出现HTTP Status 404 - No result defined for action and result input的错误. 首先认真检查所 ...

  8. ORM之单表、多表操作

    参考1 参考2 表与表之间的关系: 一对一(OneToOneField):一对一字段无论建在哪张关系表里面都可以,但是推荐建在查询频率比较高的那张表里面 一对多(ForeignKey):一对多字段建在 ...

  9. 10w+QPS 的 Redis 真的只是因为单线程和内存?360&#176; 深入底层设计为你揭开 Redis 神秘面纱!

    原文链接:10w+QPS 的 Redis 真的只是因为单线程和内存?360° 深入底层设计为你揭开 Redis 神秘面纱! 你以为 Redis 这么快仅仅因为单线程和基于内存? 那么你想得太少了,我个 ...

  10. php 数据库备份(可用作定时任务)

    参考: https://blog.csdn.net/weixin_37616043/article/details/87721181 https://blog.csdn.net/stpeace/art ...