MySQL技术内幕InnoDB存储引擎学习笔记(第九章)
来源:互联网 发布:c语言if else if 编辑:程序博客网 时间:2024/05/18 13:24
第九章 性能调优
一、实验环境
宿主机系统:windows7
虚拟机:OracleVMVirtualBox
Linux:ubuntukylin-14.04.1-amd64.iso
jdk:1.7.0_101
mysql:5.7.12
书上的mysql版本:5.6.6
二、影响性能的因素
选择合适的CPU
内存的重要性
硬盘对数据库性能的影响
合理地设置RAID
操作系统的选择也很重要
不同文件系统对数据库的影响
选择合适的基准测试工具
三、几种影响因素的介绍。
1.选择合适的CPU
当前数据库应用类型:OLTP(在线事务处理)和 OLAP(在线分析处理)
OLAP多用在数据仓库或者数据集市中,CPU密集型操作。
OLTP多用在日常的事物处理应用中,IO密集型操作。
innodb存储引擎一般都应用于OLTP的数据库应用,特点如下:
用户操作的并发量大;
事务处理的时间较短;
查询的语句较为简单,一般都走索引;
复杂的查询较少。
CPU对OLTP的影响不是很大,多个CPU或多核CPU对处理大并发量的请求有帮助。
2.内存的重要性
内存的大小最能直接反应数据库的性能。
innodb既缓存数据,又缓存索引,并将它们缓存在一个很大的缓冲池中,因此,内存的大小直接影响了数据库的性能。
如何判断当前数据库内存是否已到达瓶颈?查看当前服务器的状态,比较物理磁盘的读取和内存读取的比例来判断缓冲池的命中率,不应小于99%
缓冲池命中率=innodb_buffer_pool_read_requests/(innodb_buffer_pool_read_requests+innodb_buffer_pool_read_ahead+innodb_buffer_pool_reads)
平均每次读取的字节数=innodb_data_read/innodb_data_reads
命令:mysql>show global staus like 'innodb%read%';
3.硬盘对数据库性能的影响
传统的机械硬盘
两个指标:
1.寻道时间
2.转速
顺序访问的速度高于随机访问。。
可以将多块机械硬盘组成RAID来提高数据库的性能,也可以将数据文件分布在不同硬盘上来达到访问负载的均衡。
固态硬盘
基于闪存的固态硬盘,内部由闪存组成。已经在移动设备上得到了广泛的应用。
固态硬盘没有传统机械硬盘的读写磁头。所以不需要耗费大量时间找数据。可以提供一致的随机访问时间。
4.合理地设置RAID (独立磁盘冗余数组)
把多个相对便宜的硬盘组合起来,成为一个磁盘数组,使性能达到甚至超过一个价格昂贵,容量巨大的硬盘。
RAID的作用是:
1.增强数据集成度
2.增强容错功能
3.增加处理量或容量
对于数据库来讲RAID10是最好的选择。
5.操作系统的选择也很重要
Linux:稳定性较好
FreeBSD
Solaris
windows
6.不同文件系统对数据库的影响
文件系统很多,性能差异不明显。
ZFS本身支持快照,不需要LVM工具
mount参数。
7.选择合适的基准测试工具
对数据库或操作系统调优后的性能进行对比。
sysbench:模块化的,跨平台的多线程基准测试工具,主要用于测试各种不同系统参数下的数据库负载情况。包括:cpu性能,磁盘IO性能,调度程序性能,内存分配及传输速度,POSIX线程性能,数据库OLTP基准测试。官网:http://sysbench.sourceforge.net
测试分三个阶段:prepare、run、cleanup
mysql-tpcc
TPC(事务处理性能协会):用来评价大型数据库系统软硬件性能的非盈利性组织。
TPC-C是TPC制定,用来测试典型的复杂OLTP系统的性能。
TPC-C性能度量单位是tpmC,该值越大,代表事务处理的性能越高。
tpcc-mysql是开源的TPC-C测试工具,该测试工具完全遵守TPC-C的标准。
两个工具组成:
1.tpcc_load:根据仓库数量,生成9张表中数据
用tpcc_load创建100个仓库的数据库tpcc:
mysql tpcc<create_table.sql
mysql tpcc<add_fkey_idx.sql
tpcc_load 127.0.0.1 tpcc2 root xxxxxx 100
2.tpcc_start:根据不同选项进行TPC-C测试。
用tpcc_start进行16个线程的测试,热身时间为10分钟,测试时间为20分钟:
tpcc_start127.0.0.1 tpcc root xxxxxx 100 16 600 1200
结果分5个模块:new order ,payment,order-status,delivery,stock-level
- MySQL技术内幕InnoDB存储引擎学习笔记(第九章)
- MySQL技术内幕InnoDB存储引擎学习笔记(第二章)
- MySQL技术内幕InnoDB存储引擎学习笔记(第三章)
- MySQL技术内幕InnoDB存储引擎学习笔记(第八章)
- MySQL技术内幕InnoDB存储引擎学习笔记(第六章)
- MySQL技术内幕InnoDB存储引擎学习笔记(第一章)
- MySQL技术内幕InnoDB存储引擎学习笔记
- MySQL技术内幕-InnoDB存储引擎 笔记
- 《MySQL技术内幕:InnoDB存储引擎》第2版笔记
- MySQL技术内幕-InnoDB存储引擎读写笔记(索引概述)
- mysql 技术内幕 Innodb 存储引擎 第二版 学习 first
- MySQL技术内幕:InnoDB存储引擎
- MySQL技术内幕InnoDB存储引擎
- MySQL技术内幕InnoDB存储引擎 读书笔记
- MySQL技术内幕:InnoDB存储引擎
- MySQL技术内幕 InnoDB存储引擎(一)
- MySQL 技术内幕:InnoDB存储引擎pdf
- 《MySQL技术内幕--InnoDB存储引擎》读书笔记
- 每日一记-mysql中的int(11)-int(4)和int类型
- java web项目发布到服务器上步骤
- CGContextSaveGState与CGContextRestoreGState详解
- 自然对数e的来源以及证明
- Android ListView长按弹出CheckBox,实现全选,反选,批量删除功能
- MySQL技术内幕InnoDB存储引擎学习笔记(第九章)
- 2017网易校招内推笔试题
- 后缀数组水题(待完善)
- Android View框架总结(一)
- OJ题:输入一个多位的数字,求各数位相加。
- JWT 学习笔记
- 2,从零开始搭建SSHM开发框架(集成Spring+JPA)
- java基础——bufferedinputstream FileInputStream inputstream的比较
- java mysql 高性能批量处理 设置rewriteBatchedStatements