基於MySQL的高效能資料庫應用開發

2021-05-01 17:26:28 字數 2288 閱讀 4395

一、高效能資料庫的選擇

---- 在資料庫的應用開發中,常常會遇到效能和代價的之間矛盾。以作者在開發**行

情查詢和交易系統中遇到的問題為例,要在實時記錄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...