突破Informix固态磁盘I/O瓶颈
至今为止,我在固态硬盘 (SSD) 上成功运行主 Informix 开发数据库服务器的时间已经超过一年。我的开发服务器配备 12 枚 CPU 内核、24 GB 的 RAM、5 TB 磁盘空间和一块 512 GB 的固态硬盘。我使用这台服务器开发了 Informix 数据仓库项目,并对 OLTP 版本执行
至今为止,我在固态硬盘 (SSD) 上成功运行主 Informix 开发的时间已经超过一年。我的开发配备 12 枚 CPU 内核、24 GB 的 RAM、5 TB 磁盘空间和一块 512 GB 的固态硬盘。我使用这台服务器开发了 Informix 数据仓库项目,并对 OLTP 版本执行了基准测试。去年购买这台服务器之后,我开始尝试使用 SSD。我将主 Informix 空间从一对镜像的磁盘驱动器迁移到了 SSD。我对两个 Informix 服务器都执行了测试:一个是 11.50 版本,另一个是 11.70 版本。两个版本在 SSD 上运行时的速度都有所提升。我使用了到数据库空间的链接,因此可以将空间在常规磁盘驱动器与 SSD 之间来回复制、重置链接并启动服务器,以便测试性能。SSD 的性能要好得多,我完全不希望再回头使用旧的磁盘驱动器。SSD 的稳定性非常出色,所以我推荐对关键生产系统使用 SSD。
多年以来,磁盘驱动器一直是数据库性能瓶颈。磁盘空间越来越大,人们不断在其中存储越来越多的数据,但磁盘驱动器的速度并没有提升。随着磁盘中数据量的增加,吞吐量也成为严重问题。典型情况下,加速磁盘 I/O 的最好方法就是将数据分布到多块磁盘驱动器上,在每个磁盘中都存储较少的数据库。SSD 改变了一切,我认为磁盘驱动器将来会像磁带驱动器一样走向没落。所有人都会在 SSD 上运行程序,磁盘驱动器将仅用作备份介质。在笔记本电脑、台式机和服务器数列中,SSD 的出现频率越来越高。
混合磁盘系统是一种有趣的发明,它将 SSD 与传统硬盘结合使用。部分供应商提供的数列将 SSD 作为一批传统磁盘驱动器的智能缓存。其思路在于,将所有数据页面都存储在传统磁盘驱动器中,而最常用的数据页面则缓存在 SSD 中。我的一位客户使用此类数列获得了极大的成功,实现了显著的性能提升。其他混合趋势包括将 SSD 直接与大容量磁盘驱动器配对,将它们作为磁盘缓存。Seagate 和 OCZ 均推出了混合式磁盘驱动器或磁盘卡。虽然混合的方法能提高性能,但不如纯 SSD 速度快。我认为这只是一些临时措施,最终 SSD 的成本将降低,性价比也将提高。随着 SSD 产量的增加,成本的降低,混合方法将不再必要。
设置基准测试
为了撰写这篇文章,我决定从头开始,执行基准测试来测量 SSD 能提供的性能改进。我想执行压力测试,测量顺序读取、批量顺序读取和随机读取与写入的性能。我重新安装了最新版本的 Informix 11.70 FC4,用全新的安装和脚本从头开始制作我的 Informix 环境。每次测试都使用相同的 ONCONFIG 文件,我通过更改 Informix 磁盘空间的链接在传统磁盘驱动器与 SSD 之间切换。我使用的传统磁盘驱动器是当今大多数生产系统中常见的高速镜像对。图 1 的表格中显示了结果。
基准测试 | 镜像磁盘设备 | SSD 磁盘设备 | 提高的百分比 |
1. 配置 Dbspace 和日志 | 47 分钟 24.986 秒 | 30 分钟 38.419 秒 | 64.60 |
2. 导入数据库 | 82 分钟 18.984 秒 | 67 分钟 40.300 秒 | 82.20 |
3. 基准测试 2:批量计费作业 | 3 分钟 21.258 秒 | 2 分钟 35.227 秒 | 77.11 |
4. 基准测试 4:具有 1,000 个用户的 OLTP | 5,272 tpmC | 116,849 tpmC | 2,216.41 |
5. 数据仓库查询基准测试 | 4 小时 19 分钟 | 3 小时 14 分钟 | 74.90 |
平均总体提高 | 503.05 |
图 1:SSD 与 磁盘驱动器基准测试结果对比
下面介绍了各基准测试的测试任务。
1. 配置 Dbspace 和日志 第一项测试测量创建所有 dbspace 和所有逻辑日志花费的时间,并将物理日志移动到独立的 dbspace 中,然后重建基准测试环境。将 Informix 设置为执行直接 I/O,并在两项测试中使用成熟的文件。过去,我直接在 SSD 与传统磁盘驱动器之间复制 dbspace;这次测试在两个系统中重建了整个环境。
2. 导入数据库 下一项任务是执行各配置中使用的各数据库的 dbimport。该任务将对驱动器的写入性能执行压力测试。
3. 基准测试 2:批量计费作业 2009 年,IIUG Informix User Conference 的 Fastest DBA 大赛中执行的就是这项基准测试——过去,我曾在文章中介绍过这一基准测试。测试的目标是磁盘 I/O,因此我并未优化 SQL 来减少读写数量。
4. 基准测试 4:具有 1,000 个用户的 OLTP 这是 2011 IIUG Informix User Conference 的 Fastest Informix DBA 大赛中使用的基准测试。Advanced DataTools 为大赛提供赞助,寻找和奖励速度最快的 Informix DBA。此次大赛是过去三届 Informix 会议中最有趣的活动之一。 测试使用 Open Source BenchmarkSQL Java 程序,生成了 1,000 个会话,对一个 Informix 数据库执行插入、更新和删除操作。Open Source BenchmarkSQL 是一项 JDBC 基准测试,与 TPC-C 的 OLTP 标准极其接近。在大赛中,参赛者需要处理运行 1,000 个 OLTP 用户的 Informix 服务器,在一个小时内对其进行优化,然后评选出谁能实现最高的每分钟事务处理量。由于这属于执行读取和写入操作的随机 I/O 测试,因此会对磁盘驱动器的随机 I/O 功能进行压力测试。SSD 在这次测试中表现最佳,每分钟执行的事务处理量是传统磁盘驱动器的 2,216%。
5. 数据仓库查询基准测试 这是我开发的一个新基准测试,用于测试数据仓库性能。SSD 容量最高为 512 GB,因此我使用一个较小的数据库,运行了 18 个复杂的数据仓库查询。大多数查询需要对一个事实表进行顺序扫描,以获得相关结果,因此可以通过该操作对驱动器的读取访问进行压力测试。
关键考虑事项
在将 Informix dbspace 迁移到 SSD 的过程中,您还需要考虑可能存在磁盘 I/O 瓶颈的其他方面。在数据仓库基准测试中,我初次迁移到 SSD 时并未如期获得出色的性能。受磁盘 I/O 性能影响的另外两个因素是查询报告的临时排序空间和输出空间。将报告的临时空间和输出空间迁移到 SSD 之后,性能获益非常明显。实际上,将 Informix temp dbspace 迁移到 SSD 或许是利用这项新技术的最快方法,同时还能保证不需要重新配置整个服务器。
我与其他管理大型图像处理系统(例如影片制作)的管理员讨论了 SSD 技术。这些系统需要接近实时地访问庞大的图像文件。这些管理员已经成功构建了包含 6 到 8 块 SSD 的 RAID-10 数列。根据他们的报告,RAID-10 的数据镜像与条带化能够提高安全性,还能提高 SSD 原本已经非常出众的性能。我非常希望使用 Informix 数据库亲身体验一下这样的改进。
有关 SSD 的担忧之一就是其作为新技术的可靠性。对我来说,一块 SSD 使用了整整一年,而且完全没有出现过任何问题。而在相同的时间段内,我的三块普通硬盘都发生了故障。任何介质都必然会发生故障,因此最好始终计划备份解决方案。所有磁盘驱动器都需要定期备份。如果我使用 SSD 设计一个新的生产级 Informix 数据库服务器,我会在常规磁盘驱动器上创建一个 Informix 高可用性远程辅助服务器 (RSS) 作为备用系统。这是任何生产数据库服务器的最佳实践。
结束语
在所有数据库中,SSD 都能更快地完成 Informix 数据库任务。在顺序扫描、随机 I/O 和读取与写入中,SSD 的表现始终遥遥领先。SSD 极大地提升了 OLTP 随机磁盘 I/O 基准测试的性能。图 1 中的数字能证明一切。一言以蔽之,提高 Informix 数据库服务器速度最便捷的方法就是将 dbspaces 迁移到 SSD 中。Informix 在 SSD 上的运行表现良好。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









はじめに 変数、配列、オブジェクトに格納されたデータは一時的なものであり、プログラムが終了すると失われます。作成したデータを永続的に保存するには、他のプログラムで使用できるようにディスク ファイルに保存する必要があります。 Java の I/O テクノロジは、データをテキスト ファイル、バイナリ ファイル、さらには ZIP 圧縮ファイルに保存でき、永続的なデータ ストレージの要件を満たします。 I/O 処理テクノロジを習得すると、データ処理能力を向上させることができます。 1. ストリームの概要 ストリームとは、順序付けられたデータ列の集合であり、操作の種類に応じて、入力ストリームと出力ストリームの 2 種類に分類されます。 I/O (入力/出力) ストリームは、ソースから宛先に一連のバイトを送信するために使用できるチャネル プログラムを提供します。

Laravel のパフォーマンス問題の調査: ボトルネックと解決策の分析! Laravel は、エレガントで直感的な構文と機能豊富なツールボックスを通じて、開発者が Web アプリケーションをより効率的に構築できるようにする人気の PHP フレームワークです。ただし、アプリケーションのサイズとアクセス数が増加すると、パフォーマンスの問題が発生し、ユーザー エクスペリエンスとシステムの安定性に影響を与える可能性があります。この記事では、Laravel アプリケーションにおける一般的なパフォーマンスのボトルネックと、これらの問題を解決するためのいくつかの方法について説明します。 1. Laravelアプリケーションのクエリパフォーマンスのボトルネック

♒I/O ストリーム原理とストリーム分類 I/O 原理 I/O は、Input and Output の略で、I/O 技術は、データ伝送処理 (ファイルの読み書き、ネットワーク通信など) に使用される非常に実用的な技術です。 Java プログラムでは、データの入出力操作はストリームの形式で実行されますが、java.io パッケージには、さまざまな種類のデータを取得し、メソッドを通じて入力し、データを出力するためのさまざまなストリーム クラスとインターフェイスが提供されます。ファイルストリーム:プログラム内でファイルをストリーム形式で操作する 入力ストリーム:データソース(ファイル)からプログラム(メモリ)へのデータのパス 出力ストリーム:プログラム(メモリ)からのデータのパス)をデータソース(ファイル)へ I/Oストリームの分類は、操作データの単位に応じて、バイトストリームに分けられます。

Go 言語は、同時プログラミングに特化して設計されたプログラミング言語であり、軽量で習得が容易で強力であることが特徴です。多数の同時操作をサポートするために、Go 言語は I/O 再利用メカニズムを提供します。これにより、システムのオーバーヘッドが効果的に削減され、プログラムの効率が向上します。 I/O 多重化メカニズム (多重化テクノロジとも呼ばれます) は、複数のファイル記述子を同時に監視し、任意の 1 つまたは複数のファイル記述子が読み取り可能、書き込み可能、または異常なイベントを生成するのを待つことができ、システムの消費量を削減することができるテクノロジです。実行時にリソースを節約し、プログラムの効率を向上させます。 Go言語で

パフォーマンスは、現代の Web サイトやアプリケーションの開発において常に非常に重要な問題です。高速な読み込みと応答性に対するユーザーの要求が高まり続けるため、開発者はパフォーマンスの最適化の側面に特別な注意を払う必要があります。 Laravel フレームワークを使用して開発する開発者にとって、一般的なパフォーマンスのボトルネックを回避するためにアプリケーションのパフォーマンスを最適化することが重要です。この記事では、開発者が一般的なパフォーマンスの問題を回避できるように、Laravel を開発する際に注意すべき点をいくつか説明します。 Laraveでの適切なデータベースインデックスの使用

タイトル: Java 配列のボトルネックを突破する: 一般的なメソッドを習得するための強力なツール 本文: コンピューター技術の継続的な発展に伴い、データ処理はさまざまな分野で不可欠な部分になりました。 Java 言語では、配列は最も基本的なデータ構造の 1 つであり、さまざまなアルゴリズムやプログラムで広く使用されています。ただし、大規模なデータ処理の場合、従来の Java 配列にはパフォーマンスと効率において特定のボトルネックがあります。この記事では、Java 配列のボトルネックを突破するいくつかの方法と具体的なコード例を紹介します。 ArrayLi を使用する

C++ 開発におけるパフォーマンスのボトルネックを最適化する方法 概要: C++ 開発では、パフォーマンスのボトルネックがよくある問題です。この記事では、C++ 開発におけるパフォーマンスのボトルネックを特定して解決する方法を紹介し、最適化のヒントと提案をいくつか提供します。はじめに C++ は、高性能アプリケーションの開発に広く使用されている強力なプログラミング言語です。ただし、C++ 開発プロセスでは、パフォーマンスの問題が頭痛の種になることがよくあります。パフォーマンスのボトルネックにより、アプリケーションの実行が遅くなったり、より多くのリソースが消費されたり、予期しない結果が生じたりする可能性があります。したがって、パフォーマンスボトルの最適化

Java I/O ストリームでは、バッファはデータをキャッシュするメモリ領域であり、これにより I/O パフォーマンスが向上します。バッファ管理には、データの読み取りとバッファへの書き込み、バッファからのデータの読み取り、およびバッファを空にするステップが含まれます。
