数据库性能基准的5个问题
简介 数据库已经是绝大多数IT应用的核心,各种数据库看上去很大不同,多层体系结构以及SOA的发展,使得应用逻辑的实现前移。数据库的性能,与其功能相比较,变得越来越重要了。因此,性能是衡量数据库的非常重要的方面,我们这里将讨论数据库性能基准的五个
简介
数据库已经是绝大多数IT应用的核心,各种数据库看上去很大不同,多层体系结构以及SOA的发展,使得应用逻辑的实现前移。数据库的性能,与其功能相比较,变得越来越重要了。因此,性能是衡量数据库的非常重要的方面,我们这里将讨论数据库性能基准的五个常见问题。
1.Windows和Linux,哪个操作系统的性能基准结果更好?
这是一个有争议的很难回答的问题。虽然大部分可能认为Linux可能更快一些,但是Windows server平台在过去的几年中已经快速成熟了。下面是图表1,它是在相同的硬件环境下执行得到的在线TPC-C基准结果的图表,使用了32位和64位的Windows 2003 Server Release 2 和 CentOS 4 Update 3 (一个免费Redhat的企业版本)。
你可以看到,技术上看来是不分胜负的。因此,你可以按自己意愿选择,或者考虑到培训成本,可以选择拥有较多系统管理员的那个操作系统。
![]() |
图1 |
2. 32位还是64位,哪种更好?这会影响操作系统的选择吗?
64位Unix 服务器已经有很多年了,但64位的Windows操作系统才刚刚变成现实。(Windows NT可运行在DEC Alpha上,但一直没有真正进入主流。)很长一段时间,AMD的Athlon-64和Opteron处理器一直很出色。直到2006年中Intel的二代双核CPU的出现,它的表现相当让人惊讶!现在我们可以用更好的价格购买这些硬件。我们将能耗和房间制冷都计算到TCO中。
与32位相比,64位真的有明显差异吗?根据图表1,回答是否定的。但那是因为64位提供的主要优势在于增加了可寻址内存。图表2将再次显示TPC-C基准执行的结果,但系统和数据库可以分配的内存的总数量增加了。
![]() |
图2 |
我们有了这些很清楚的结果。这些数据显示,如果你的服务器有2GB或少一些的内存,在32位和64位的处理下没有明显的差别。但当你的服务器的内存增加到超过2GB以后,64位的优势就会显示出来.尽管诸如Oracle数据库有32位联接选项来欺骗数据库,使之可以访问稍多的内存(知名的巨大内存模型),这仅仅只能有一点效果。特大内存对系统和数据库来说,可以不断实现性能的改进。
一般情况下,服务器的内存大于4GB时,建议使用64位。不过值得注意的是,有时某些类型的硬件(例如驱动器,iSCS)和更新的数据库选项(例如,ASM,OCFS)在32位的Linux上工作得更好。
3.哪个数据库拥有最好的性能基准:Oracle 10g,SQL Server 2005 还是MySQL 5.0?
这也是一个有争议的问题。说到它,仅仅是把经常提到最多的三个数据库拿来讨论。(这里并不是有意忽略DB2-UDB,PostgreSQL或所有的其他数据库)。我们知道数据库厂商一般是不欢迎公布性能基准数据的,特别是在它们之间的比较情况。尽管如此,我们来讨论这个常见的问题。图表3显示了在MySQL,SQL Server和Oracle数据库上执行的TPC-C基准的结果。
![]() |
图3 |
碰巧的是我们不必冒任何厂商愤怒的风险,因为性能结果显示,它们的技术不分胜负。同样,你可以按照你的意愿选择数据库,或者是哪个数据库管理员多就选择哪一个。
当然,在这些厂商之间的花费是不同的,但是因为没有人会按照报价购买产品,所以按照这个因素进行比较TPC-C是很困难的。
4.如何确定一个服务器所能支持的最大并发OLTP用户数?
这始终是一个很难回答得问题,因为人们经常想听到,“Dell 1850能处理多少的并发用户量。”事实上,即使是同一系列的服务器,有相同的内存容量,但是也会由于CPU的数量、CPU的时钟频率、CPU的内核数、高速缓冲存储器的大小等因素导致能力的差异。比较服务器是很困难的,除非你有看起来几乎一样配置的机器。但是你也需要比较相同的网络和磁盘IO等情况。假设你那样做,问题变成你如何分析这样的基准结果,并准确确定那台服务器的最大并发用户负载。图表4显示了TPC-C基准的结果,只在一台服务器上确定拐点(即用户负载开始对响应时间有负面影响)。
![]() |
图4 |
如果你的最终用户要求响应时间(最常见的指标)少于2秒,那么在200个并发用户这个点你应该停下来。图4显示这个服务器可支持多达250个用户并发直到响应时间达到无法接受的急骤上升的点. 在这种情况下,TPS比率开始趋于平缓或减少,这个例子中碰巧,这两个点同时出现。但是并不总是如此明显;这是因为有时两个拐点并不一定排列的这么整齐。当拿不准时,建议通常关注TPC-C或OLTP类型事务的响应时间。
5.如何确定一个服务器所能支持的最大数据仓库大小?
这又是一个很难回答的问题,因为大多数人想听到是,“处理X千兆字节的数据需要一台Dell 1850。”上文中提到,比较服务器是不容易的事情,除非你拥有的主机几乎有一样的配置,以及一样的网络和磁盘I/O环境。磁盘I/O在这里是特别重要的,因为TPC-H结果大部分是由磁盘数量来决定的。如果能比较服务器,那么问题就变为如何从基准结果中确定那台指定服务器的最大数据仓库的大小。在图表5中,显示了基于几个强大的Oracle RAC服务器配置的TPC-H基准的测试结果。这些服务器访问分布在多个SAN和超过100个磁盘上的300GB数据。
![]() |
图5 |
在TPC-H中,值得注意的是,应该同时关注整体运行时和间平均响应时间。TPC-H的询问是非常复杂的,通常要花数个小时,或好几天才能完成。
根据图表6,最好的硬件配置大运行5小时,平均响应时间约4小时。然而,通过几次运行时间很长的测试,实际的响应时间的变化是很倾斜的。因此,如果你的用户对于高度复杂的决策支持查询能接受运行时间在4个小时的,8个节点的集群将可以满足要求。如果不能接受的话,那么需要购买更多磁盘,而不是增加更多的服务器。对于千兆容量的数据仓库,使用500到1000个磁盘可以达到最佳的效果,这种情况并不少见。
![]() |
图5 |

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

不同Java框架的效能比較:RESTAPI請求處理:Vert.x最佳,請求速率達SpringBoot2倍,Dropwizard3倍。資料庫查詢:SpringBoot的HibernateORM優於Vert.x及Dropwizard的ORM。快取操作:Vert.x的Hazelcast客戶端優於SpringBoot及Dropwizard的快取機制。合適框架:根據應用需求選擇,Vert.x適用於高效能Web服務,SpringBoot適用於資料密集型應用,Dropwizard適用於微服務架構。

蘋果公司最新發布的iOS18、iPadOS18以及macOSSequoia系統為Photos應用程式增添了一項重要功能,旨在幫助用戶輕鬆恢復因各種原因遺失或損壞的照片和影片。這項新功能在Photos應用的"工具"部分引入了一個名為"已恢復"的相冊,當用戶設備中存在未納入其照片庫的圖片或影片時,該相冊將自動顯示。 "已恢復"相簿的出現為因資料庫損壞、相機應用未正確保存至照片庫或第三方應用管理照片庫時照片和視頻丟失提供了解決方案。使用者只需簡單幾步

如何在PHP中使用MySQLi建立資料庫連線:包含MySQLi擴充(require_once)建立連線函數(functionconnect_to_db)呼叫連線函數($conn=connect_to_db())執行查詢($result=$conn->query())關閉連線( $conn->close())

優化C++多執行緒效能的有效技術包括:限制執行緒數量,避免爭用資源。使用輕量級互斥鎖,減少爭用。優化鎖的範圍,最小化等待時間。採用無鎖定資料結構,提高並發性。避免忙等,透過事件通知執行緒資源可用性。

PHP處理資料庫連線報錯,可以使用下列步驟:使用mysqli_connect_errno()取得錯誤代碼。使用mysqli_connect_error()取得錯誤訊息。透過擷取並記錄這些錯誤訊息,可以輕鬆識別並解決資料庫連接問題,確保應用程式的順暢運作。

根據基準測試,對於小型、高效能應用程序,Quarkus(快速啟動、低記憶體)或Micronaut(TechEmpower優異)是理想選擇。 SpringBoot適用於大型、全端應用程序,但啟動時間和記憶體佔用稍慢。

在Golang中使用資料庫回呼函數可以實現:在指定資料庫操作完成後執行自訂程式碼。透過單獨的函數新增自訂行為,無需編寫額外程式碼。回調函數可用於插入、更新、刪除和查詢操作。必須使用sql.Exec、sql.QueryRow或sql.Query函數才能使用回呼函數。

可以透過使用gjson函式庫或json.Unmarshal函數將JSON資料儲存到MySQL資料庫中。 gjson函式庫提供了方便的方法來解析JSON字段,而json.Unmarshal函數需要一個目標類型指標來解組JSON資料。這兩種方法都需要準備SQL語句和執行插入操作來將資料持久化到資料庫中。
