存储IO设计和性能调优
- 格式:pdf
- 大小:892.86 KB
- 文档页数:13
用友U8性能调优及开发注意事项U8系统为多层部署,以数据为中心的企业业务处理系统。
影响和决定系统运行效率主要有以下几个方面,服务器硬件配置;系统部署状态、网络等系统配置。
软件环境,程序算法,代码编写、尤其是数据库代码的编写。
下面将对这几个方面展开。
一、服务器硬件配置优化U8系统首先是运行在服务器硬件基础上,所以硬件配置和调整对系统影响很大。
同时决定服务器性能的主要是磁盘、内存、处理器三方面。
1.磁盘IO方面使用U8系统建议配置磁盘阵列,推荐至少4张10K转/分的硬盘以上制作Raid,保证Raid 的磁盘读取速度在200MB/S以上。
日常情况下系统磁盘排队明显,磁盘排队经常在10以上,请考虑增加Raid中硬盘数量,或考虑增加磁盘阵列柜,以缓解磁盘IO的吞吐压力。
2.内存方面使用U8系统中等规模以上时,数据库服务器保证4GB内存以上。
如果应用服务器和数据库服务器安装在同一台服务器上,服务器内存不能低于4GB。
日常情况下系统内存页交换明显,如果服务器内存页交换经常在30 Pages/Sec以上,请考虑增加服务器内存。
3.处理器方面用户数据量大,系统磁盘操作较多,数据库服务器压力,主要是处理器压力。
处理器使用率一般情况下不超过60%。
如果CPU占用率长时间超过75%以上,推荐增加服务器处理器个数,或使用多台数据库或应用服务器以减轻系统应用服务器压力。
4.网络要求局域网内使用U8系统,应保证网络畅通,客户机与服务器的通讯正常。
使用Ping命令从客户机向服务器发送请求,正常反馈为:Reply from 10.1.43.36: bytes=32 time<1ms TTL=126。
如果响应时间超过1ms(Time>1ms)应调整网络设置,确保通讯。
5.数据库服务器内存分配调优●在32位 Microsoft Windows 2003 操作系统中选项的具体配置方式如下:/3GB修改系统的Boot.ini文件。
MySql(⼗):MySQL性能调优——MySQLServer性能优化本章主要通过针对MySQL Server( mysqld)相关实现机制的分析,得到⼀些相应的优化建议。
主要涉及MySQL的安装以及相关参数设置的优化,但不包括mysqld之外的⽐如存储引擎相关的参数优化,存储引擎的相关参数设置建议将主要在下⼀章“ 常⽤存储引擎的优化” 中进⾏说明。
⼀、MySQL安装和优化1.选择合适的发⾏版本a.⼆进制发⾏版(包括RPM 等包装好的特定⼆进制版本)由于MySQL 开源的特性,不仅仅MySQL AB 提供了多个平台上⾯的多种⼆进制发⾏版本可以供⼤家选择,还有不少第三⽅公司(或者个⼈)也给我们提供了不少选择。
使⽤MySQL AB 提供的⼆进制发⾏版本我们可以得到哪些好处?a) 通过⾮常简单的安装⽅式快速完成MySQL 的部署;b) 安装版本是经过⽐较完善的功能和性能测试的编译版本;c) 所使⽤的编译参数更具通⽤性的,且⽐较稳定;d) 如果购买了MySQL 的服务,将能最⼤程度的得到MySQL 的技术⽀持;b.第三⽅提供的MySQL 发⾏版本⼤多是在MySQL AB 官⽅提供的源代码⽅⾯做了或多或少的针对性改动,然后再编译⽽成。
这些改动有些是在某些功能上⾯的改进,也有些是在某写操作的性能⽅⾯的改进。
还有些由各OS ⼚商所提供的发⾏版本,则可能是在有些代码⽅⾯针对⾃⼰的OS 做了⼀些相应的底层调⽤的调整,以使MySQL 与⾃⼰的OS 能够更完美的结合。
当然,也有⼀些第三⽅发⾏版本并没有动过MySQL ⼀⾏代码,仅仅只是在编译参数⽅⾯做了⼀些相关的调整,⽽让MySQL 在某些特定场景下表现更优秀。
这样⼀说,听起来好像第三⽅发⾏的MySQL ⼆进制版本要⽐MySQL AB 官⽅提供的⼆进制发⾏版有更⼤的吸引⼒,那么我们是否就应该选⽤第三⽅提供的⼆进制发⾏版呢?需要进⼀步分析⼀下第三⽅发⾏版本可能存在哪些问题?⾸先,由于第三⽅发⾏版本对MySQL 所做的改动,很多都是为了应对发⾏者⾃⼰所处的特定场景⽽做出来的。
mysql 调优面试题MySQL调优面试题MySQL是一种常用的数据库管理系统,它的性能优化对于提升数据库的效率和响应速度非常重要。
在MySQL的面试中,调优问题经常被提及。
本文将介绍一些常见的MySQL调优面试题,并给出相应的解答。
1. 什么是MySQL的优化?MySQL的优化是指通过改进配置、索引和查询语句等手段,提高MySQL数据库系统的性能、稳定性和可用性的过程。
优化的目标是减少资源占用,提高查询速度,提高并发性能,以及降低数据库的负载。
2. 怎样查看MySQL的性能瓶颈?常见的方法有:- 运行SHOW PROCESSLIST命令,查看当前的查询和连接情况,找出正在执行的耗时查询。
- 使用MySQL自带的性能监控工具,如MySQL Workbench、MySQL Enterprise Monitor等,收集和分析数据库性能指标。
- 使用第三方性能监控工具,如pt-query-digest、Percona Toolkit等,对慢查询日志进行分析,找出影响性能的SQL语句。
- 监控服务器的系统资源使用情况,如CPU、内存、磁盘IO等,找出瓶颈所在。
- 使用性能测试工具,如sysbench、TPC-H等,对数据库进行压力测试,发现性能瓶颈。
3. 如何优化MySQL的查询性能?以下是一些常用的查询性能优化方法:- 使用合适的索引,以加快查询的速度。
可以通过使用EXPLAIN命令来分析查询语句的执行计划,判断是否使用了正确的索引。
- 避免使用SELECT *,只查询需要的字段,减少数据的传输量。
- 优化复杂查询语句,尽量减少子查询的使用,使用JOIN语句等代替。
- 避免在WHERE子句中使用函数或计算,以免引起全表扫描。
- 对于频繁执行的查询,考虑使用缓存技术,如Memcached或Redis,将查询结果缓存起来。
- 分析和优化查询语句的执行计划。
4. 如何优化MySQL的表结构?以下是一些常用的表结构优化方法:- 根据业务需求设计合理的表结构,避免冗余字段和重复数据。
性能调优---------------------方法:一、检查日志是否有错误二、检查参数是否设置正确三、检查系统IO、CPU、内存等利用率,查看哪些占用较高四、检查哪些SQL语句大量占用IO或CPU权衡性能与安全的方面:一、多个控制文件二、一个日志文件组中有多个日志文件三、频繁的执行检查点四、备份数据文件五、频繁的归档六、块检查七、同时执行操作与统计性能调优工具:查看ALTER.LOG中的信息:1、用/ORA- 能查找文件中的错误信息2、要想让ALTER.LOG文件中产生检查点开始与结束信息,得修改参数LOG_CHECKPOINTS_TO_ALERT,将之修改为TRUE。
默认为FALSE。
SQL>ALTER SYSTEM SET LOG_CHECKPOINTS_TO_ALERT = TRUE SCOPE=BOTH;在用户UDUMP目录下的文件中产生监控用户执行信息:方法1、监控自己的操作。
在自己的session中设置参数,这样就能在用户udump目录下生成执行的SQL语句信息SQL>ALTER SESSION SET SQL_TRACE=TRUE;在pl/sql或者sqlplus中,打开一个sql_window。
(1)先运行:alter session set sql_trace=true;(2)再运行你那个返回结果不正确的SQL(3)再运行:alter session set sql_trace=false;(4)马上登陆到机器上,到$ORACLE_BASE/admin/sid/udump目录下。
(5)找到刚生成的.trc文件(假设文件名是 xxx.trc),执行命令转储跟踪文件:tkprof xxx.trc aa.txt。
查看aa.txt文件。
这个文件里面有执行计划。
看看执行计划每一步返回的结果集记录数是不是正确。
方法2、SYS用户监控别的用户执行情况方法3、对所有SESSION进行监控SQL>ALTER SESSION SET SQL_TRACE=TURE;安装STATSPACK一、创建表空间,最少100M二、安装在安装时默认创建了一个用户PERFSTAT,所以密码也可以输入这个选择要将快照存放于哪个表空间使用STATSPACK手动执行生成一次快照,间隔一般为10几分钟为益,中间不要有停机。
网络游戏服务器性能测试与调优方法研究1. 引言网络游戏已成为人们日常娱乐的重要方式,伴随着用户数量和交互复杂性的增加,保持服务器的良好性能对于游戏体验的顺畅性至关重要。
本文将探讨网络游戏服务器性能测试与调优的方法,以提高服务器的性能和稳定性。
2. 网络游戏服务器性能测试2.1 压力测试压力测试是一种常用的性能测试方法,通过模拟多用户的请求并逐渐增加负载,测试服务器在高负载情况下的性能表现。
测试可以涵盖同时在线玩家数量、网络延迟、吞吐量等指标。
通过分析服务器响应时间、并发用户数量以及错误率等指标,可以确定服务器的性能极限和瓶颈所在。
2.2 负载均衡测试负载均衡测试是为了验证服务器集群能够按照预期的方式分配请求负载。
在测试中,通过逐渐增加并发用户数量,观察服务器集群中各个节点之间的负载分配,以便及时调整负载均衡策略,保持服务器资源的合理利用。
2.3 安全性测试安全性测试是为了保证服务器的防护能力,防止黑客攻击和非法入侵。
在测试过程中,可以模拟各种攻击场景,如DDoS攻击、SQL注入等,通过检测和分析服务器的应对能力,及时修复漏洞,提升服务器的安全性。
3. 网络游戏服务器性能调优3.1 服务器资源管理服务器资源管理是调优的关键步骤之一,包括对CPU、内存、网络带宽等资源的合理分配和优化。
通过监控系统资源的使用情况,及时进行资源调整,以满足游戏运行的需求,提高游戏服务器的性能和稳定性。
3.2 数据库性能优化数据库是网络游戏服务器不可或缺的关键组件,数据的读写效率直接影响游戏运行的流畅度和响应速度。
通过合理的数据库索引设计、适当的数据库缓存设置,以及对热点数据的分离存储等手段,可以大幅提升数据库性能,提高游戏服务器的响应速度。
3.3 网络流量优化网络流量优化是提高游戏服务器性能的重要手段之一。
通过使用压缩技术、优化网络协议、减少不必要的网络数据传输等方法,可以减少网络延迟和带宽占用,提高游戏服务器的响应速度和吞吐量。
誉天 Cisco / Linux 认证社区/BBS优化 AIX 7 磁盘性能 第二部分 监视逻辑卷并分析结果关于本系列 本系列共有三篇文章(见 参考资料),介绍 AIX® 磁盘和 I/O 子系统,重点关注在优 化磁盘 I/O 性能时遇到的各种挑战。
尽管磁盘调优很可能没有 CPU 或者内存优化那么 激动人心,但它是优化服务器性能的关键方面。
事实上,部分原因是因为磁盘 I/O 是 最薄弱的子系统环节,与任何其他子系统相比,可以通过更多的措施提高磁盘 I/O 性 能。
简介 与其他子系统的调优不同, 实际上在构建系统的架构设计阶段就应该开始进行磁盘 I/O 调优。
尽管有一些与虚拟内存参数相当的 I/O 调优参数(ioo 和 lvmo),但是提高磁 盘 I/O 性能的最佳方法是正确地配置系统,而不是优化相关的参数。
与虚拟内存优化 不同,在创建了逻辑卷并开始运行之后,要更改它们的组织方式会很复杂,所以通常只 有一次机会正确地完成这项任务。
在本文中,我们将讨论配置逻辑卷的方式,以及应该 将它们布置于物理磁盘上的什么地方。
还要介绍用于监视逻辑卷的工具。
其中大多数工 具并不适合于长期趋势研究并且是 AIX 特有的工具,它们可以帮助了解配置逻辑卷的 方式,以及是否针对环境对它们进行了优化。
在 AIX 7 中,主要工具集和可调参数没什么变动,但是有必要重新研究这些功能,以 便确保系统能够提供最好的信息和性能。
本系列的第 1 部分(见 参考资料)介绍了 iostat,但仅介绍了使用该工具查看异步 I/O 服务器。
第 2 部分使用 iostat 来监视磁盘,介绍它能够完成哪些工作以帮助您 并不是专门为 AIX 设 快速地确定 I/O 瓶颈。
尽管 iostat 是通用的 UNIX® 实用工具, 计的, 但它对于快速地确定系统的运行情况是非常有用的。
AIX 特有的逻辑卷命令可以 帮助更深入地研究逻辑卷,帮助您真正地分析实际问题(如果存在任何问题的话)。
ab 分布式io分布式IO是指在分布式系统中进行输入输出操作的一种方式。
在传统的IO操作中,数据通常是通过读写本地文件或者网络传输到另一个节点。
而在分布式IO中,数据可以通过分布式文件系统、分布式数据库或者其他分布式存储系统进行读写操作。
分布式IO的出现主要是为了解决传统IO操作中的性能瓶颈和可扩展性问题。
在传统IO操作中,如果数据量较大或者访问频率较高,单个节点可能无法满足需求。
而分布式IO可以将数据分散存储在多个节点上,并通过并行处理的方式提高读写性能。
此外,由于数据的冗余存储和容错机制,分布式IO还具有较高的可靠性和可用性。
分布式IO的实现方式有很多种,下面介绍几种常见的方式:1. 分布式文件系统:分布式文件系统是一种将数据分布存储在多个节点上的文件系统。
通过将文件分割成多个块并存储在不同的节点上,可以实现文件的并行读写操作。
常见的分布式文件系统有Hadoop的HDFS和谷歌的GFS。
2. 分布式数据库:分布式数据库是一种将数据分布存储在多个节点上的数据库系统。
通过将数据按照一定规则分片,并存储在不同的节点上,可以实现数据的并行读写操作。
常见的分布式数据库有Apache Cassandra和MongoDB。
3. 分布式缓存:分布式缓存是一种将数据存储在多个节点上的缓存系统。
通过将数据分布存储在多个节点上,可以提高缓存系统的读写性能和可扩展性。
常见的分布式缓存系统有Redis和Memcached。
4. 分布式日志:分布式日志是一种将日志数据分布存储在多个节点上的日志系统。
通过将日志数据分散存储在多个节点上,并通过并行处理的方式进行数据的读写操作,可以提高日志系统的吞吐量和可用性。
常见的分布式日志系统有Apache Kafka和RabbitMQ。
在进行分布式IO操作时,需要考虑以下几点:1. 数据一致性:由于数据的分布存储在多个节点上,可能会存在数据一致性的问题。
在进行写操作时,需要采用一致性协议(如Paxos或Raft)来保证数据的一致性。
虚拟机的性能监控和调优虚拟机(Virtual Machine,简称VM)是一种软件仿真技术,它能够在一个主机上模拟出多个独立的虚拟电脑环境。
随着云计算的发展,虚拟化技术在数据中心中得到广泛应用。
在使用虚拟机的过程中,如何进行性能监控和调优以确保虚拟机的正常运行和高效性能,成为了一项重要任务。
一、性能监控性能监控是指通过检测和记录虚拟机关键指标,以获得虚拟机的性能信息并进行分析、评估的过程。
性能监控可以帮助管理员及时发现虚拟机的瓶颈问题,以及对性能进行优化和调整。
1. 监控指标在进行虚拟机性能监控时,需要选择一些关键的监控指标,如:CPU利用率:监控CPU的使用率,了解虚拟机对CPU资源的需求情况。
内存利用率:监控内存的使用率,了解虚拟机对内存资源的需求情况。
磁盘IO:监控磁盘的读写速度,了解虚拟机对磁盘IO的利用情况。
网络带宽:监控网络的传输速率,了解虚拟机对网络资源的利用情况。
2. 监控工具常用的虚拟机性能监控工具包括Zabbix、Grafana和Nagios等。
这些工具提供了多种监控方式,可以通过图表、报警等形式实时监控虚拟机性能指标。
二、性能调优性能调优是指通过采取一系列措施来提升虚拟机的性能,减少资源的浪费和瓶颈问题,提高系统的吞吐量和响应速度。
1. 虚拟机分配资源首先要根据虚拟机的实际需求合理分配资源,包括CPU、内存、磁盘和网络资源。
根据不同的负载情况,适当增加或减少虚拟机的资源配额,以达到最佳性能。
2. 主机资源管理在虚拟化环境中,主机是承载虚拟机的物理服务器。
为了最大化资源的利用率,需要对主机资源进行合理管理。
可以通过合理划分主机的物理资源,对虚拟机进行负载均衡,使得每台虚拟机的负载相对平衡。
3. 存储优化存储是虚拟机性能的重要因素之一。
可以通过使用高性能的存储设备,如SSD固态硬盘,来提升虚拟机的磁盘IO性能。
此外,可以使用存储缓存技术,如RAID和存储快照,来提高虚拟机的读写性能和数据保护能力。
服务器性能优化提升服务器性能的有效方法有哪些服务器性能优化是在服务器硬件和软件层面上进行调整和优化,以提升服务器的运行效率和性能。
在应对大流量、高并发以及复杂应用场景下,服务器性能优化显得尤为重要。
本文将探讨几种有效的方法来提升服务器的性能,并展示它们的优缺点。
一、升级硬件服务器的硬件升级是提升性能的最直接和有效的方法之一。
升级硬件通常包括增加内存容量、更换更快的处理器、优化存储设备等。
增加内存容量可以在大并发情况下提升请求的响应速度,更快的处理器可以加快计算和处理能力,而优化存储设备可以减少磁盘IO等待时间。
然而,硬件升级涉及成本和物理更换,可能对生产环境带来一定的停机时间。
二、优化数据库数据库是服务器性能的核心组成部分,优化数据库可以明显提升服务器的性能。
首先,可以通过合理的数据库设计和规范的表结构来减少查询时间和提高读写效率。
其次,通过索引优化和查询优化,可以加快查询速度和减少资源的消耗。
另外,升级数据库软件版本和合理划分数据表,也是优化数据库性能的有效手段。
三、负载均衡负载均衡是在高并发情况下提升服务器性能的重要方法之一。
通过将请求分发到多台服务器上,可以有效分担服务器的负载,提高并发处理能力。
常用的负载均衡方法包括硬件负载均衡、软件负载均衡和DNS负载均衡等。
硬件负载均衡通常使用专用硬件设备,能够根据特定算法进行请求分发;软件负载均衡则基于软件实现,具有更大的灵活性和可定制性;而DNS负载均衡则通过DNS解析实现请求的分发。
四、缓存优化缓存优化可以减少对数据库的频繁访问,提升服务器响应速度。
通过将常用的数据和计算结果缓存起来,可以避免每次请求都去执行复杂的计算或数据库查询。
常用的缓存方案包括内存缓存、分布式缓存和页面缓存等。
内存缓存通常使用类似Redis的缓存服务器,分布式缓存则将缓存数据分散存储在多个服务器上,而页面缓存则将整个页面的HTML内容缓存在服务器上。
五、优化代码和算法优化代码和算法可以提高服务器的运行效率和性能。
存储I/O设计和性能调优对于任何程序的运行来说,最慢、最花费时间的操作实际上是从磁盘中检索数据。
这主要缘于磁盘 I/O 访问中存在的物理机械过程(磁头旋转和寻道)。
尽管磁盘存储技术在最近几年取得了极大的进步,但磁盘的旋转速度却没有太大的提高。
您必须清楚这样一个事实:在一定条件下,RAM 访问仅需要大概 540个 CPU时钟周期,而磁盘访问则需要花费大概20 000 000个CPU 时钟周期。
很明显,系统中访问数据最薄弱的环节就是磁盘 I/O 存储系统,从性能调整的角度来说,就是确保磁盘数据布局不会成为更严重的瓶颈。
糟糕的数据布局将会给 I/O 性能带来更大的影响。
在对系统进行任何优化活动之前,首先应该了解您的存储I/O 系统的物理体系结构,因为如果您所设计的存储 I/O 系统非常糟糕,并且其中包含慢速磁盘,或者适配器的使用非常低效,那么其他的任何优化工作都无法提供帮助。
数据库的作用就是实现对数据的管理和查询。
任何一个数据库系统,必然存在对数据的大量读、写操作。
所以I/O问题也往往是导致数据库性能问题的重要原因。
要控制好数据库的整体I/O性能,在规划数据库架构时就需要做好存储I/O系统的设计和配置。
例如,将对I/O要求不同的文件放置在不同的存储设备上;规划表空间容器的分布、均衡I/O负担、使用并行I/O访问等。
在一个应用系统的逻辑部署和物理部署图中,存储和操作系统位于应用系统体系结构的最底层。
而数据库是部署在操作系统和存储层之上的,所以我们在做数据库的物理设计和逻辑设计之前,必须先做好存储I/O设计。
存储I/O设计中最大的一个原则就是将I/O访问的分布最大限度地平衡在所有可以利用的物理设备上。
本章主要内容包括:存储基本概念存储架构存储相关性能调整案例存储设计性能相关问题存储I/O设计总结1 存储基本概念关于存储的概念太多,许多已经超出了本书的讨论范围。
本章主要讲解最常见的几个概念,它们是我们进行存储I/O设计所必须掌握的。
1.1 硬盘硬盘处于整个存储系统的最底层,核心的业务数据通常都存放在硬盘上。
我们从硬盘上读取一次I/O要花费的时间如下:硬盘的转速(Rotational Speed):也就是硬盘电机主轴的转速,转速是决定硬盘内部传输率的关键因素之一,它的快慢在很大程度上影响了硬盘的速度。
同时,转速的快慢也是区分硬盘档次的重要标志之一。
硬盘的主轴马达带动盘片高速旋转,产生浮力使磁头飘浮在盘片上方。
要将所要存取资料的扇区带到磁头下方,转速越快,等待时间也就越短。
因此,转速在很大程度上决定了硬盘的速度。
目前市场上常见的硬盘转速一般有5400rpm、7200rpm 和15000rpm。
理论上,转速越快越好,因为较高的转速可缩短硬盘的平均寻道时间和实际读写时间。
但是转速越快发热量越大,不利于散热。
现在的主流硬盘转速一般为15000rpm 以上。
平均寻道时间(Average Seek Time):指硬盘在盘面上移动读写头至指定磁道寻找相应目标数据所用的时间,它描述硬盘读取数据的能力,单位为毫秒。
当单碟片容量增大时,磁头的寻道动作和移动距离减少,从而使平均寻道时间减少,加快硬盘速度。
平均延迟时间(Average Latency Time):指当磁头移动到数据所在的磁道后,然后等待所要的数据块继续转动到磁头下所用的时间。
平均访问时间(Average Access Time):指磁头找到指定数据的平均时间,通常是平均寻道时间和平均延迟时间之和。
平均访问时间最能够代表硬盘找到某一数据所用的时间,越短的平均访问时间越好。
为什么要讲硬盘呢?因为DB2数据库在工作时,一条SQL语句在经过优化器编译时,优化器会读取统计信息、数据库配置参数和相关硬件信息来为该条SQL语句生成最优的执行计划。
其中的硬件信息包括表空间的transrate和overhead。
这两个参数的计算就是由硬盘的相关属性来决定的。
它们计算公式如下:transrate=(1/传送速率)*1000/1024000*4096(假设用4KB页大小)overhead=平均寻道时间+(((1/磁盘转速)*60*1000)/2)而平均寻道时间、磁盘旋转速度和传送速率是由硬盘本身决定的。
所以我们必须做合理的存储I/O设计以使优化器更好地工作。
1.2 磁盘阵列技术RAID的全称是独立磁盘冗余阵列(Redundant Array of Independent Disks)。
它通过将多个相对比较便宜的磁盘组合起来,并相互连接,同时都连到一个或多个计算机上,以组成一个磁盘组,从而使其性能和容量达到或超过一个价格更昂贵的大型磁盘。
20年来,RAID 推出了一系列级别,包括RAID 0、RAID 1、RAID 2、RAID 3、RAID4、RAID 5,以及各种组合如 RAID 1+0等,其中应用最广泛的是RAID5和RAID10。
RAID 1+0RAID-0能提供更好的性能,RAID-1能提供最佳的数据保护。
如果把两者结合在一起,就能同时提供高性能和数据保护,但这也会同时提高磁盘阵列造价。
RAID-5RAID-5不做全磁盘镜像,但它会对每一个写操作做奇偶校验计算并写入奇偶校验数据。
奇偶校验磁盘避免了像RAID-1那样完全重复写数据。
当一个磁盘失效,校验数据被用来重建数据,从而保证系统不会崩溃。
为避免磁盘瓶颈,奇偶校验和数据都会被分布到阵列中的各个磁盘。
尽管读的效率提高了,但是RAID-5需要为每个写操作做奇偶校验,因此它的写的效率很差。
1.3 存储的Cache高端存储系统中除了要有高性能、高扩展性的结构外,Cache的设计将直接影响到存储系统的性能表现和可靠性。
Cache的主要作用是什么呢?作为缓存,Cache的作用具体体现在读与写两个不同的方面:作为写,一般存储阵列只要求数据写到Cache就算完成了写操作,当写Cache的数据积累到一定程度,阵列才把数据刷到磁盘,这样可以实现批量的写入。
所以,阵列的写是非常快速的。
至于Cache数据的保护,一般都依赖于镜像与电池(或者是UPS)。
Cache在读数据方面的作用同样不可忽视,因为如果所要读取的数据能在Cache中命中的话,将大大减少磁盘寻道所需要的时间。
因为磁盘从开始寻道到找到数据,一般都在6ms 以上,而这个时间,对于那些密集型I/O的应用可能不是太理想。
但是,如果能在Cache保存的数据中命中,一般响应时间则可以缩短在1ms以内。
存储的Cache大小对整个I/O性能的影响是非常大的1.4 IOPSIOPS,即I/O Per Second,也就是每秒进行读写(I/O)操作的次数,它是衡量存储性能的一个重要指标。
1.5 网络存储技术FC SAN(Storage Area Network,存储区域网)是一个高速的子网,这个子网中的设备可以从您的主网卸载流量。
通常,SAN由RAID阵列连接光纤通道(Fibre Channel)组成,SAN 同服务器和客户机的数据通信是通过SCSI命令而非TCP/IP来实现的,数据处理是"块级"(block level)。
SAN通过特定的互联方式连接若干台存储服务器而组成一个单独的数据网络,提供企业级的数据存储服务,如图2-2所示。
SAN是一种特殊的高速网络,连接网络服务器和诸如大磁盘阵列或备份磁带库的存储设备,SAN置于LAN之下,而不涉及LAN。
利用SAN,不仅可以提供大容量的存储数据,而且地域上可以分散,缓解了大量数据传输对局域网的影响。
SAN的结构允许任何服务器连接到任何存储阵列,不管数据存放在哪里,服务器都可直接存取所需的数据。
图2-2 SAN存储示意图NAS是Network Attached Storage(网络附加存储)的简称。
在NAS存储结构中,存储系统不再通过I/O总线附属于某个服务器或客户机,而是直接通过网络接口与网络直接相连,由用户通过网络访问。
它是连接到一个计算机网络的文件层的数据存储,可以为不同网络的客户端提供数据存储服务。
NAS的硬件与传统的专用文件服务器相似,它们的不同点在于软件端。
NAS中的操作系统和其他软件只提供数据存储、数据访问功能,以及对这些功能的管提示:Core Director可以智能化地自动实现负载平衡和流量控制。
在I/O处理过程中,要保证HBA卡的网络带宽、光交换机端口带宽、存储的前端端口、后端端口的速度匹配。
不要因为某个瓶颈而导致"木桶效应"。
2.2 应用系统I/O流动图我们举一个某移动公司营账系统的例子,该系统比较复杂,那么我们来看看该系统的一个整体I/O流动图,如图2-4所示。
图2-4展示了该移动公司营账应用系统的数据处理层次图。
在这个数据处理层次中,我们可以首先简单地将其划分为三个较大的层次:用户层、应用层、数据层。
用户层:用户负责发出对数据的请求;应用层:提供各种满足要求的应用,对用户的请求向数据层传递,同样负责将数据层获得的数据处理后发送给用户;数据层:负责数据的管理,以及最终的数据I/O。
对于性能的问题,应用层和数据层都需要引起我们的关注,这两者都会对整个系统的性能产生较大的影响。
假设最终用户在前台发出了一个查询交易,该交易其实就是一条select语句,那么该请求通过http/https发送到Web Server服务器,Web Server接收到该请求后再把该请求转发给Application Server,在这个阶段我们要确保Web Server方面不存在瓶颈,否则它无法及时地把最终用户请求转发,会引起交易请求阻塞;Application Server接收到请求后,通过应用程序业务逻辑去数据库中检索记录,在该阶段,我们要确保Application Server 不存在瓶颈,不会阻塞到数据库的请求,否则我们要进行Application Server调优;当这个请求到达DB Server后,数据库优化器会为该SQL语句适于语法检查、语义分析、权限检查、查询重写等,之后会制订一个最优的访问计划(access plan),在该计划中决定用什么索引、用什么扫描方式、访问表的顺序和连接方式等。
假设优化器为这条SQL语句确定的是全表扫描方式,那么它首先判断数据库bufferpool中是否有它请求的数据,如果有,就直接从内存读取,这叫逻辑读;否则就要从硬盘读,那么要首先判断该表在哪个表空间中,如果该表空间采用的是裸设备(lv),那么它会去读逻辑卷(lv),逻辑卷(lv)是在逻辑卷管理器(lvm)之上的,而lvm又在操作系统之上;在操作系统和存储之间往往还会有一个存储的多路径通道软件(例如AIX上的MP I/O Driver、EMC 的power path、日立的HiCommand Dynamic Link Manager (HDLM)等)可以实现动态负载均衡和流量控制;在多路径通道软件之下是存储供应商的设备驱动(Device Driver);主机服务器通过HBA卡和光纤交换机连接,光纤交换机和存储的前端连接,存储的前端再通过存储的Cache连接后端的物理磁盘。