一、高性能數據庫的選擇
---- 在數據庫的應用開發中,常常會遇到性能和代價的之間矛盾。以作者在開發股市行情查詢和交易系統中遇到的問題為例,要在實時記錄1000多只股票每分鐘更新一次的行情數據的同時,響應大量並發用戶的數據查詢請求。考慮到性價比和易維護性,系統又要求在基於PC服務器,Windows NT平台的軟硬件環境下實現。開始,我們采用了MS SQLServer 6.5 作為數據庫系統,用Visual C++ 6.0開發了訪問數據庫的前端,應用ODBC數據接口,在進行了大量的數據庫配置和程序優化後,發現仍不能滿足性能要求。後采用SQL Server的DB-Library接口,繞過了ODBC解釋層,可以每秒更新行情數據30次,同時支持20-30個左右的並發用戶進行行情查詢,基本滿足要求(單台PC服務器,單PII350 CPU,內存128M,SCSI硬盤)。有沒有可能進一步提高系統的性能和負載能力呢?經過分析,數據庫服務器是系統的瓶頸。當然,可以采用UNIX服務器+大型數據庫的系統平台,但其開發、運行、維護的費用比微機+Windows NT平台的費用高出數倍。我們在其它一些系統的開發中,也經常遇到這樣的矛盾。如何在微機平台上建立大容量、高效率、易維護、高性價比的數據庫系統呢?
---- 考察國內基於微機平台的數據庫應用系統,典型的如網易的分布式郵件系統,采用了FreeBSD+MySQL的平台,其容量、負載能力和響應速度都很優秀。作者查閱了MySQL的相關文檔,發現MySQL是GNU軟件(即OpenSource自由軟件)中非常優秀的數據庫系統,它完全符合SQL92 (Entry level)和 ODBC( level 0-2)規范,在符合POSIX規范的操作系統上實現了非常高效的關系型數據庫管理系統。根據MySQL提供的文檔,它的數據操作堪稱所有數據庫中最高效的,Benchmark如下表:
Reading 2000000 rows by index
Database Seconds
MySQL 367
MySQL_odbc 464
db2_odbc 1206
informix_odbc 121126
ms-sql_odbc 1634
Oracle_odbc 20800
solid_odbc 877
Sybase_odbc 17614
Inserting (350768) rows
Database Seconds
MySQL 381
MySQL_odbc 619
db2_odbc 3460
informix_odbc 2692
ms-sql_odbc 4012
Oracle_odbc 11291
solid_odbc 1801
Sybase_odbc 4802
(run on the same NT 4.0 Machine)
---- 從MySQL的Benchmark中可以看到,MySQL的性能非常出眾(當然,測試的MySQL系統可能作了優化,被測數據可能是針對MySQL選擇的),而且MySQL提供了對Windows NT的支持。Windows NT+MySQL能否成為構建高性能數據庫應用的理想選擇呢?作者用MySQL的數據接口改寫了程序,經過一段時間的運行,證明MySQL確實是高效而穩定的數據庫,非常適合構建大容量、高效率、易維護、高性價比的數據庫應用系統。現將MySQL的安裝、運行、開發的心得與大家共享。
二、
[1] [2] [3] [4] [5] 下一頁