搜尋

MySQL插件XtraDB

Jun 07, 2016 pm 04:31 PM
j2eemysql企業應用外掛

在J2EE企业应用中,不仅仅需要考虑到系统的架构与设计,还需要关注存储系列的话题,存储包括硬件和软件,话题中数据库也算存储系列当中的重点。当前对与MySQL的使用越来越广泛,对MySQL的期望和要求也越来越多。记得在前几天我写过一篇文章,关于一个德国网

在J2EE企业应用中,不仅仅需要考虑到系统的架构与设计,还需要关注存储系列的话题,存储包括硬件和软件,话题中数据库也算存储系列当中的重点。当前对与MySQL的使用越来越广泛,对MySQL的期望和要求也越来越多。记得在前几天我写过一篇文章,关于一个德国网站的 架构,他们正在考虑将现在使用的MySQL引擎换掉,采用XtraDB数据库引擎,详见: 德国SNS交友/视频网站Poppen.de的技术架构分享。

最近看一个老外在Dell PowerEdge R900机器上做的MySQL测试,使用MySQL 5.1.42,分别采用3种不同的引擎进行比较,分别是MySQL自带的InnoDB,InnoDB-plugin 1.0.6、 XtraDB 1.0.6-9 ,测试数据90GB+索引。
Dell PowerEdge R900的机器配置如下:
    * 4 QuadCore Intel(R) Xeon(R) CPU E7320 @ 2.13GHz (16 cores in total)
    * 32GB of RAM
    * RAID10 on 8 disks 2.5/15K RPMS
    * FusionIO 160GB SLC
    * FusionIO 320GB MLC

测试环境的InnoDB数据文件建立在FusionIO存储设备上,采用160GB SLC卡 和 320GB MLC卡配置的软RAID0 存储,而InnoDB 日志和 MySQL系统表建立在 RAID10 设备上,测试环境中的my.cnf配置文件清单如下:
* InnoDB
innodb_buffer_pool_size=26G
innodb_data_file_path=ibdata1:10M:autoextend
innodb_file_per_table=1
innodb_flush_log_at_trx_commit=0
innodb_log_buffer_size=8M
innodb_log_files_in_group=3
innodb_log_file_size=512M
innodb_thread_concurrency=0
innodb_flush_method = O_DIRECT
max_connections=3000
query_cache_size=0
skip-name-resolve
skip-grant-table
table_cache=10000
* InnoDB-plugin / XtraDB
ignore-builtin-innodb
plugin-load=innodb=ha_innodb_plugin.so
innodb_buffer_pool_size=26G
innodb_data_file_path=ibdata1:10M:autoextend
innodb_file_per_table=1
innodb_flush_log_at_trx_commit=0
innodb_log_buffer_size=8M
innodb_log_files_in_group=3
innodb_log_file_size=512M
innodb_thread_concurrency=0
innodb_flush_method= O_DIRECT
innodb_write_io_threads=8
innodb_read_io_threads=8
innodb_io_capacity=10000

口水:
文中提到的Fusion-io 是什么?Fusion-IO 是固态存储技术和高向能I/O解决方案的领先供应商。该公司的的固态存储技术弥补了处理能力和存储性能需求之间的差距,满足了企业对高性能的存储,详见:官方网站http://fusioniochina.com/

能看出InnoDB-plugin引擎比MySQL默认的 InnoDB引擎要好,他利用多线程I/O,满足更多的吞吐量,在多核CPU条件下运行的效率将会更高, 对内存也有更效的利用。
而XtraDB对MySQL很多方面也进行了改进和性能提高,并且增加监控参数,显示一些后台线程的统计信息,innodb默认开启4个IO线程,由参数innodb_file_io_threads控制,但在unix/linux平台该参数无效,而XtraDB/innodb plugin默认开启8个IO线程,并且读线程和写线程可以分别由参数innodb_read_io_threads和 innodb_write_io_threads控制。
在多核CPU环境中,如果CPU和磁盘本身没有成为瓶颈,开启更多线程应该对提升IO性能有很好的 作用。而读写线程的单独控制,则可以针对不同应用环境下的要求进行灵活配置。XtraDB更加详细的列出buffer pool中不同部分的详细信息,还有buffer pool的命中率和LRU的信息等,对内存的使用情况一目了然,之前innodb在代码里面写死了 innodb_io_capacity 为100,但是现在db服务器很多都是用多块硬盘做raid10,IOPS 一般都远不止100,因此这次改进之后  innodb_io_capacity 变成可以动态调整的参数,测试结果如图所示:http://www.68idc.cn/help/uploads/allimg/150207/0SH263N-0.png

测试结果中的CPU使用率,如图所示:

http://www.68idc.cn/help/uploads/allimg/150207/0SH2A47-1.png

磁盘的吞吐状态,如图所示:

disk_bo

看过资料后,还是想自己折腾一番,下载MySQL源码编译、安装,先不安装XtraDB,键入“show plugins” ,如图所示:

http://1aqpcg.bay.livefilestore.com/y1pvl450H4sAV2_W2guPsT71MeLMQAZYNGTEIuCiQJxA7HjhdzhJ0GtrEAA-XNvONxxrOPsvstv-RVi03qd-A2IIQZY9W8ebXrW/nox.png
查看大图请点击这里

在另外一台机器上安装XtraDB引擎后的效果,如图所示:
http://1aqpcg.bay.livefilestore.com/y1poygf8tU6sV0lc8jS6bkhXC2ntLTVkfI5r4ZGtG_-MBdIt9KJiuh5SHTV3Lt9TPfauGcyp0AH3kSQ4AeAmee9nHsaBnHpdZnE/yesx.png
从上图中可以看出多了不少栏目,查看大图请点击这里

BWT:MySQL、 xtradb 引擎软件下载
http://downloads.mysql.com/archives/mysql-5.1/mysql-5.1.44.tar.gz

http://launchpad.net/percona-xtradb/release-8/1.0.4-8/+download/percona-xtradb-1.0.4-8.tar.gz

2个不同的MySQL环境搭建好后,采用Apache 的AB压力测试工具对Java web工程测试,测试环境只有一张表操作表里面有100条数据,服务器是本地Tomcat6,修改代码中JDBC的url连接地址,依次测试,每台机器的配置基本相同CPU 1.6G,2G内存。
详细测试结果如下:
==========================Linux InnoDB(远程)==============================
Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    1   2.5      0       7
Processing:   134 1516 604.3   1447    3553
Waiting:      133 1515 604.3   1447    3552
Total:        134 1518 604.4   1451    3559
Percentage of the requests served within a certain time (ms)
  50%   1451
  66%   1774
  75%   1968
  80%   2078
  90%   2320
  95%   2454
  98%   2869
  99%   3101
 100%   3559 (longest request)
==========================Linux XtraDB(远程)==============================
Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    1   2.1      0       6
Processing:     8  915 463.2    816    2360
Waiting:        8  915 463.1    816    2360
Total:          8  917 463.5    816    2365
Percentage of the requests served within a certain time (ms)
  50%    816
  66%   1038
  75%   1251
  80%   1359
  90%   1541
  95%   1716
  98%   2014
  99%   2130
 100%   2365 (longest request)
===========================Windows InnoDB(本地)==============================
Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    1   2.2      0       6
Processing:   155 3337 1617.2   3116    9243
Waiting:      154 3337 1617.2   3115    9243
Total:        155 3339 1616.7   3116    9243
 Percentage of the requests served within a certain time (ms)
  50%   3116
  66%   3930
  75%   4535
  80%   4868
  90%   5484
  95%   6010
  98%   6478
  99%   7153
 100%   9243 (longest request)

总结:
测试数据的多少暂时不是关注的重点,关键是相同的前置条件,相同的测试数据,在不同的MySQL引擎中测试得到的值,在2个不同的操作系统下,2种不同的 MySQL数据引擎,测试结果表名,XtraDB果然是表现最好的,其次是Linux 下MySQL默认的InnoDB引擎,最差的是Windows下的MySQL默认的InnoDB引擎,

–end–

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
MySQL的許可與其他數據庫系統相比如何?MySQL的許可與其他數據庫系統相比如何?Apr 25, 2025 am 12:26 AM

MySQL使用的是GPL許可證。 1)GPL許可證允許自由使用、修改和分發MySQL,但修改後的分發需遵循GPL。 2)商業許可證可避免公開修改,適合需要保密的商業應用。

您什麼時候選擇InnoDB而不是Myisam,反之亦然?您什麼時候選擇InnoDB而不是Myisam,反之亦然?Apr 25, 2025 am 12:22 AM

選擇InnoDB而不是MyISAM的情況包括:1)需要事務支持,2)高並發環境,3)需要高數據一致性;反之,選擇MyISAM的情況包括:1)主要是讀操作,2)不需要事務支持。 InnoDB適合需要高數據一致性和事務處理的應用,如電商平台,而MyISAM適合讀密集型且無需事務的應用,如博客系統。

在MySQL中解釋外鍵的目的。在MySQL中解釋外鍵的目的。Apr 25, 2025 am 12:17 AM

在MySQL中,外鍵的作用是建立表與表之間的關係,確保數據的一致性和完整性。外鍵通過引用完整性檢查和級聯操作維護數據的有效性,使用時需注意性能優化和避免常見錯誤。

MySQL中有哪些不同類型的索引?MySQL中有哪些不同類型的索引?Apr 25, 2025 am 12:12 AM

MySQL中有四種主要的索引類型:B-Tree索引、哈希索引、全文索引和空間索引。 1.B-Tree索引適用於範圍查詢、排序和分組,適合在employees表的name列上創建。 2.哈希索引適用於等值查詢,適合在MEMORY存儲引擎的hash_table表的id列上創建。 3.全文索引用於文本搜索,適合在articles表的content列上創建。 4.空間索引用於地理空間查詢,適合在locations表的geom列上創建。

您如何在MySQL中創建索引?您如何在MySQL中創建索引?Apr 25, 2025 am 12:06 AM

toCreateAnIndexinMysql,usethecReateIndexStatement.1)forasingLecolumn,使用“ createIndexIdx_lastNameEnemployees(lastName); 2)foracompositeIndex,使用“ createIndexIndexIndexIndexIndexDx_nameOmplayees(lastName,firstName,firstName);” 3)forauniqe instex,creationexexexexex,

MySQL與Sqlite有何不同?MySQL與Sqlite有何不同?Apr 24, 2025 am 12:12 AM

MySQL和SQLite的主要區別在於設計理念和使用場景:1.MySQL適用於大型應用和企業級解決方案,支持高性能和高並發;2.SQLite適合移動應用和桌面軟件,輕量級且易於嵌入。

MySQL中的索引是什麼?它們如何提高性能?MySQL中的索引是什麼?它們如何提高性能?Apr 24, 2025 am 12:09 AM

MySQL中的索引是數據庫表中一列或多列的有序結構,用於加速數據檢索。 1)索引通過減少掃描數據量提升查詢速度。 2)B-Tree索引利用平衡樹結構,適合範圍查詢和排序。 3)創建索引使用CREATEINDEX語句,如CREATEINDEXidx_customer_idONorders(customer_id)。 4)複合索引可優化多列查詢,如CREATEINDEXidx_customer_orderONorders(customer_id,order_date)。 5)使用EXPLAIN分析查詢計劃,避

說明如何使用MySQL中的交易來確保數據一致性。說明如何使用MySQL中的交易來確保數據一致性。Apr 24, 2025 am 12:09 AM

在MySQL中使用事務可以確保數據一致性。 1)通過STARTTRANSACTION開始事務,執行SQL操作後用COMMIT提交或ROLLBACK回滾。 2)使用SAVEPOINT可以設置保存點,允許部分回滾。 3)性能優化建議包括縮短事務時間、避免大規模查詢和合理使用隔離級別。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

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

熱工具

SecLists

SecLists

SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強大的PHP整合開發環境

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

WebStorm Mac版

WebStorm Mac版

好用的JavaScript開發工具