高性能Mysql这本书,在电脑里面下载快半年了,一直没时间看,最终决定在9月份每天花点时间把这本书看完,在这里记录一下书中的一些知识点,便于积累吧。
第一章 Mysql架构
第一章讲的都是基础
一、Mysql逻辑架构一共有三层。
顶层服务主要处理链接处理、授权、认证等。第二层是关键包括查询解析、分析、优化、缓存和内建函数等,还有各种存储引擎提供功能也集中在这一层,存储过程、触发器、试图等。
二、预写式事务日志、MVCC (可以百度)
===============百度如下
.预写式日志。innodb有自己的内存数据缓存(跟mysql服务器层的查询缓存不是一回事,该缓存最大不会超过数据库的大小,这个我们的应用会比较小应该不会超过5G),写入的时候可以先写入内存。在写入事务日志,这个是顺序IO比修改数据的随机IO要快不少,同时innodb_flush_log_at_trx_commit,该写入动作不跟事务同步,而是每秒执行一次,进一步提高性能。
innodb_flush_log_at_trx_commit (这个很管用)
抱怨Innodb比MyISAM慢 100倍?那么你大概是忘了调整这个值。默认值1的意思是每一次事务提交或事务外的指令都需要把日志写入(flush)硬盘,这是很费时的。特别是使用电 池供电缓存(Battery backed up cache)时。设成2对于很多运用,特别是从MyISAM表转过来的是可以的,它的意思是不写入硬盘而是写入系统缓存。日志仍然会每秒flush到硬 盘,所以你一般不会丢失超过1-2秒的更新。设成0会更快一点,但安全方面比较差,即使MySQL挂了也可能会丢失事务的数据。而值2只会在整个操作系统 挂了时才可能丢数据。
===================
三、存储引擎
1、myisam
平台通用,通过简单的拷贝就可以 存储为两个文件数据文件和索引文件
特性:
加锁与并发、自动修复、手工修复、索引特性(blob和text前500个字符创建相关索引,支持全文索引)
延迟更新索引(delay_key_write)、压缩的myisam表
百度来的
=====================
插入大数据时,有索引会很慢,可以DISABLE KEYS,或者直接在table中加入DELAY_KEY_WRITE
注:
delay_key_write这个参数只对myisam类型表有效
如果你某个表需要经常update操作,这个参数就很管用!
但等delay_key_write使用时,出现断电或重启时,会导致在cache的索引update没来得及更新,所以必须在启动参数加上 –myisam-recover,或者在conf设置myisam-recover=BACKUP,FORCE。这样在你启动mysql的时候会检查你的 表并同步表和索引.
另外如果修复myisam类表可以在my.cnf中mysqld段设置myisam-recover恢复功能,参数有:default,force,backup,QUICK
http://www.cnblogs.com/zhizhesky/archive/2011/08/22/2149357.html
=======================
并发插入 (concurrent_insert)
=============== 百度来的
MyISAM存储引擎有一个系统变量concurrent_insert,专门用以控制其并发插入的行为,其值分别可以为0、1或2。
·当concurrent_insert设置为0时,不允许并发插入。
·当concurrent_insert设置为1时,如果MyISAM表中没有空洞(即表的中间没有被删除的行),MyISAM允许在一个进程读表的同时,另一个进程从表尾插入记录。这也是MySQL的默认设置。
·当concurrent_insert设置为2时,无论MyISAM表中有没有空洞,都允许在表尾并发插入记录。
==============
2、myisam merge
myisam的变种,合并表讲几个相同的myisam表合并为一个虚表,记录日志和数据仓库的时候非常有用。
3、innodb
专为事务处理而设计,特别是短期事务,它将所有的数据共同存储在一个或几个的数据文件中,这种数据文件称之为表空间
使用mvcc机制获得高并发,默认隔离基本为repeatable read,使用间隙所,防止幻读。
基于聚镞索引
4、memory引擎
内存表,比myisam快一个数量级,存在内存当中,表结构在磁盘上,重启后数据都会消失
但是使用表级加锁,只支持较低的写并发,也不支持blob和text字段,只支持定长字段,浪费了一些内存
好处:缓存中间数据、周期性聚合数据,查找和映射表。
5、archive引擎
只支持select和insert查询,不支持索引,缓冲了数据写操作、插入时进行了zlib压缩,使的磁盘io较小比myisam,支持行级加锁和专用缓冲区,可以高并发
适用于数据记录和数据采集
其他如:csv引擎、federated引擎、blackhole引擎、ndb cluster引擎、falcon引擎、solidDB引擎、pbxt引擎、maria引擎(准备替代myisam)