cari

MySQL插件XtraDB

Jun 07, 2016 pm 04:31 PM
j2eemysqlperusahaanpermohonanpemalam

在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–

Kenyataan
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Bagaimanakah pelesenan MySQL berbanding dengan sistem pangkalan data lain?Bagaimanakah pelesenan MySQL berbanding dengan sistem pangkalan data lain?Apr 25, 2025 am 12:26 AM

MySQL menggunakan lesen GPL. 1) Lesen GPL membolehkan penggunaan percuma, pengubahsuaian dan pengedaran MySQL, tetapi taburan yang diubah suai mesti mematuhi GPL. 2) Lesen komersial boleh mengelakkan pengubahsuaian awam dan sesuai untuk aplikasi komersil yang memerlukan kerahsiaan.

Bilakah anda memilih InnoDB atas myisam, dan sebaliknya?Bilakah anda memilih InnoDB atas myisam, dan sebaliknya?Apr 25, 2025 am 12:22 AM

Keadaan ketika memilih innoDB dan bukannya myisam termasuk: 1) sokongan transaksi, 2) persekitaran konkurensi tinggi, 3) konsistensi data yang tinggi; Sebaliknya, keadaan apabila memilih myisam termasuk: 1) terutamanya membaca operasi, 2) Tiada sokongan transaksi diperlukan. InnoDB sesuai untuk aplikasi yang memerlukan konsistensi data yang tinggi dan pemprosesan urus niaga, seperti platform e-dagang, manakala MyISAM sesuai untuk aplikasi bacaan dan bebas transaksi seperti sistem blog.

Terangkan tujuan kunci asing di MySQL.Terangkan tujuan kunci asing di MySQL.Apr 25, 2025 am 12:17 AM

Di MySQL, fungsi kunci asing adalah untuk mewujudkan hubungan antara jadual dan memastikan konsistensi dan integriti data. Kekunci asing mengekalkan keberkesanan data melalui pemeriksaan integriti rujukan dan operasi cascading. Perhatikan pengoptimuman prestasi dan elakkan kesilapan biasa apabila menggunakannya.

Apakah jenis indeks yang berbeza di MySQL?Apakah jenis indeks yang berbeza di MySQL?Apr 25, 2025 am 12:12 AM

Terdapat empat jenis indeks utama dalam MySQL: Indeks B-Tree, Indeks Hash, Indeks Teks Penuh dan Indeks Spatial. 1. B-Tree Index sesuai untuk pertanyaan, penyortiran dan pengelompokan, dan sesuai untuk penciptaan pada lajur Nama Jadual Pekerja. 2. Indeks hash sesuai untuk pertanyaan yang setara dan sesuai untuk penciptaan pada lajur ID jadual hash_table enjin penyimpanan memori. 3. Indeks teks penuh digunakan untuk carian teks, sesuai untuk penciptaan pada lajur kandungan jadual artikel. 4. Indeks spatial digunakan untuk pertanyaan geospatial, sesuai untuk penciptaan pada lajur geom jadual lokasi.

Bagaimana anda membuat indeks di MySQL?Bagaimana anda membuat indeks di MySQL?Apr 25, 2025 am 12:06 AM

TOCREATEANINDEXINMYSQL, USETHECreateIndexStatement.1) forasingLecolumn, gunakan "createIndexidx_lastNameonemployees (lastName);" 2) foracompositeIndex, gunakan "createindexidx_nameonemployees (lastName, firstName)

Bagaimanakah MySQL berbeza dari SQLite?Bagaimanakah MySQL berbeza dari SQLite?Apr 24, 2025 am 12:12 AM

Perbezaan utama antara MySQL dan SQLite adalah konsep reka bentuk dan senario penggunaan: 1. MySQL sesuai untuk aplikasi besar dan penyelesaian peringkat perusahaan, menyokong prestasi tinggi dan kesesuaian yang tinggi; 2. SQLITE sesuai untuk aplikasi mudah alih dan perisian desktop, ringan dan mudah dibenamkan.

Apakah indeks di MySQL, dan bagaimana mereka meningkatkan prestasi?Apakah indeks di MySQL, dan bagaimana mereka meningkatkan prestasi?Apr 24, 2025 am 12:09 AM

Indeks dalam MySQL adalah struktur yang diperintahkan satu atau lebih lajur dalam jadual pangkalan data, yang digunakan untuk mempercepat pengambilan data. 1) Indeks meningkatkan kelajuan pertanyaan dengan mengurangkan jumlah data yang diimbas. 2) Indeks B-Tree menggunakan struktur pokok yang seimbang, yang sesuai untuk pertanyaan dan penyortiran pelbagai. 3) Gunakan pernyataan createIndex untuk membuat indeks, seperti createIndexidx_customer_idonorders (customer_id). 4) Indeks komposit boleh mengoptimumkan pertanyaan berbilang lajur, seperti createIndexidx_customer_orderonorders (customer_id, order_date). 5) Gunakan Jelaskan untuk menganalisis rancangan pertanyaan dan elakkan

Terangkan cara menggunakan transaksi di MySQL untuk memastikan konsistensi data.Terangkan cara menggunakan transaksi di MySQL untuk memastikan konsistensi data.Apr 24, 2025 am 12:09 AM

Menggunakan transaksi dalam MySQL memastikan konsistensi data. 1) Mulakan transaksi melalui starttransaction, dan kemudian laksanakan operasi SQL dan serahkannya dengan komit atau rollback. 2) Gunakan SavePoint untuk menetapkan titik simpan untuk membolehkan rollback separa. 3) Cadangan Pengoptimuman Prestasi termasuk memendekkan masa urus niaga, mengelakkan pertanyaan berskala besar dan menggunakan tahap pengasingan yang munasabah.

See all articles

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

PhpStorm versi Mac

PhpStorm versi Mac

Alat pembangunan bersepadu PHP profesional terkini (2018.2.1).

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 Linux versi baharu

SublimeText3 Linux versi baharu

SublimeText3 Linux versi terkini

mPDF

mPDF

mPDF ialah perpustakaan PHP yang boleh menjana fail PDF daripada HTML yang dikodkan UTF-8. Pengarang asal, Ian Back, menulis mPDF untuk mengeluarkan fail PDF "dengan cepat" dari tapak webnya dan mengendalikan bahasa yang berbeza. Ia lebih perlahan dan menghasilkan fail yang lebih besar apabila menggunakan fon Unicode daripada skrip asal seperti HTML2FPDF, tetapi menyokong gaya CSS dsb. dan mempunyai banyak peningkatan. Menyokong hampir semua bahasa, termasuk RTL (Arab dan Ibrani) dan CJK (Cina, Jepun dan Korea). Menyokong elemen peringkat blok bersarang (seperti P, DIV),

Penyesuai Pelayan SAP NetWeaver untuk Eclipse

Penyesuai Pelayan SAP NetWeaver untuk Eclipse

Integrasikan Eclipse dengan pelayan aplikasi SAP NetWeaver.