一、高效能資料庫的選擇
---- 在資料庫的應用開發中,常常會遇到效能和代價的之間矛盾。以作者在開發**行
情查詢和交易系統中遇到的問題為例,要在實時記錄1000多隻**每分鐘更新一次的行
情資料的同時,響應大量併發使用者的資料查詢請求。考慮到價效比和易維護性,系統又
要求在基於pc伺服器,windows nt平台的軟硬體環境下實現。開始,我們採用了ms sql
server 6.5 作為資料庫系統,用visual c++ 6.0開發了訪問資料庫的前端,應用odbc
資料介面,在進行了大量的資料庫配置和程式優化後,發現仍不能滿足效能要求。後採
用sql server的db-library介面,繞過了odbc解釋層,可以每秒更新**資料30次,同
時支援20-30個左右的併發使用者進行**查詢,基本滿足要求(單台pc伺服器,單pii3
50 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的安裝
、執行、開發的心得與大家共享。
二、mysql的安裝和執行
三、mysql客戶端應用的開發
四、總結
---- 作者用mysql在windows nt上構建了高效能、高穩定性的資料庫系統。這樣,既可
以利用windows nt和visual c++的友好介面,又可以獲得mysql的強大功能。實踐證明,
這種方案成本低(別忘了mysql是免費的)、效率高、開發周期短、執行穩定(mysql的
穩定性在yahoo、163、263等站點獲得了極高的評價)。
---- 目前,我的****查詢和交易系統已經獲得了每秒鐘記錄70-100條****數
據,同時響應50個併發使用者進行資料查詢的效能,而系統的開發、執行成本卻大幅降低
。如果您正為pc上的資料庫效率發愁,不妨也來試試mysql吧。
Redis高效能資料庫
redis高效能資料庫 redis 本質上是乙個非關係型資料庫,採用鍵值的方式記錄資料,由於其獨特的執行模式和資料儲存模式,在作用上通常可以用來當做關係型資料庫的快取來使用,從而提高資料查詢效率 redis最大特點 執行速度很快 原因 1 redis使用c語言開發,和作業系統的相容性更強,執行效率更...
高效能Mysql資料庫表設計原則
以下觀點參考 高效能 mysql 歡迎指教。1 更小通常更好 選擇表示資料的最小型別 正確儲存你的內容 比如說,能夠使用char 資料型別儲存,就不必選擇text,能夠使用int型儲存資料,就不應該使用long型。理由 更小的資料型別使用了更小的磁碟空間,記憶體和cpu快取,而且需要的cpu週期也更...
MySQL資料庫臨時提高效能的方法
連線數量超過max connections時,新來的連線會被拒絕。這時有一些臨時解決辦法 注意這些辦法都是有損的 kill掉那些占用連線但未進行事務操作的執行緒,注意如果資料庫端主動斷開連線,客戶端是不能立刻感知的。讓資料庫建立連線時跳過許可權驗證階段,重啟資料庫,並使用 skip grant ta...