Drupal7的Field Storage性能测试报告(译)
本篇是关于Drupal7下Field Storage的测试结果,以及不同情况下对 drupal 性能的影响,主要是MySQL和MongoDB以及在调优参数情况和不调优情况下的对比。 本篇翻译自 《Field Storage Tests with Drupal 7》 链接地址: http://posulliv.github.io/2013/01/07/b
本篇是关于Drupal7下Field Storage的测试结果,以及不同情况下对drupal性能的影响,主要是MySQL和MongoDB以及在调优参数情况和不调优情况下的对比。
本篇翻译自 《Field Storage Tests with Drupal 7》
链接地址: http://posulliv.github.io/2013/01/07/bench-field-storage/
测试环境
EC2 EBS backed Large instance (8GB of memory) in the US-EAST availability zone
Ubuntu 12.04 (ami-fd20ad94 as listed in official ubuntu AMI’s)
MySQL 5.5.28
PostgreSQL 9.2
MongoDB 2.0.4
Drupal 7.17
Drush 5.1
Migrate 2.5
测试的case是分别对MySQL和PostgreSQL进行调优和没有调优,以及配合MongoDB下进行的,具体的优化参数这里先列举一下。
MySQL的优化参数如下:
innodb_flush_log_at_trx_commit=0 innodb_doublewrite=0 log-bin=0 innodb_support_xa=0 innodb_buffer_pool_size=6G innodb_log_file_size=512M
PostgreSQL的优化参数如下:
fsync = off synchronous_commit = off wal_writer_delay = 10000ms wal_buffers = 16MB checkpoint_segments = 64 shared_buffers = 6GB
测试数据集(Dataset)
测试数据集来自于migrate_example_baseball,现在已经是migrate模块(Drupal官网地址: http://www.drupal.org/project/migrate)的一部分了,这些数据包括了美国职业棒球大联盟2000到2009年的数据,每年的数据在一个CSV文件里面。
测试结果
测试环境 | 平均吞吐率 |
---|---|
Default MySQL | 1932 nodes / minute |
Default PostgreSQL | 1649 nodes / minute |
Tuned MySQL | 3024 nodes / minute |
Tuned PostgreSQL | 1772 nodes / minute |
Default MySQL with MongoDB | 4609 nodes / minute |
Default PostgreSQL with MongoDB | 4810 nodes / minute |
Tuned MySQL with MongoDB | 7671 nodes / minute |
Tuned PostgreSQL with MongoDB | 5911 nodes / minute |
结论
一目了然,结果自然不必说,MongoDB的性能肯定比默认数据库的Field Storage要好很多,优化过的数据库肯定比没有优化过的数据库性能要好很多。
不过比较有意思的是,PostgreSQL的测试数据,我们发现,在Drupal7的Field Storage机制里,每个字段都会新建表的机制,对PostgreSQL的影响还是非常大的。因此,用不用MongoDB,对PostgreSQL数据库的影响更大一些。
接下一篇关于Field Storage的测试,请点击查看:
《Drupal7 Field Storage性能之Field SQL Norevisions》
其他问题,请到Drupal大学提问 >
原文地址:Drupal7的Field Storage性能测试报告(译), 感谢原作者分享。

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

AI Hentai Generator
Generate AI Hentai for free.

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics

The "Inaction Test" of the new fantasy fairy MMORPG "Zhu Xian 2" will be launched on April 23. What kind of new fairy adventure story will happen in Zhu Xian Continent thousands of years after the original work? The Six Realm Immortal World, a full-time immortal academy, a free immortal life, and all kinds of fun in the immortal world are waiting for the immortal friends to explore in person! The "Wuwei Test" pre-download is now open. Fairy friends can go to the official website to download. You cannot log in to the game server before the server is launched. The activation code can be used after the pre-download and installation is completed. "Zhu Xian 2" "Inaction Test" opening hours: April 23 10:00 - May 6 23:59 The new fairy adventure chapter of the orthodox sequel to Zhu Xian "Zhu Xian 2" is based on the "Zhu Xian" novel as a blueprint. Based on the world view of the original work, the game background is set

Functional testing verifies function functionality through black-box and white-box testing, while code coverage measures the portion of code covered by test cases. Different languages (such as Python and Java) have different testing frameworks, coverage tools and features. Practical cases show how to use Python's Unittest and Coverage and Java's JUnit and JaCoCo for function testing and coverage evaluation.

Performance comparison of different Java frameworks: REST API request processing: Vert.x is the best, with a request rate of 2 times SpringBoot and 3 times Dropwizard. Database query: SpringBoot's HibernateORM is better than Vert.x and Dropwizard's ORM. Caching operations: Vert.x's Hazelcast client is superior to SpringBoot and Dropwizard's caching mechanisms. Suitable framework: Choose according to application requirements. Vert.x is suitable for high-performance web services, SpringBoot is suitable for data-intensive applications, and Dropwizard is suitable for microservice architecture.

The performance comparison of PHP array key value flipping methods shows that the array_flip() function performs better than the for loop in large arrays (more than 1 million elements) and takes less time. The for loop method of manually flipping key values takes a relatively long time.

Effective techniques for optimizing C++ multi-threaded performance include limiting the number of threads to avoid resource contention. Use lightweight mutex locks to reduce contention. Optimize the scope of the lock and minimize the waiting time. Use lock-free data structures to improve concurrency. Avoid busy waiting and notify threads of resource availability through events.

Static function performance considerations are as follows: Code size: Static functions are usually smaller because they do not contain member variables. Memory occupation: does not belong to any specific object and does not occupy object memory. Calling overhead: lower, no need to call through object pointer or reference. Multi-thread-safe: Generally thread-safe because there is no dependence on class instances.

A way to benchmark the performance of Java functions is to use the Java Microbenchmark Suite (JMH). Specific steps include: Adding JMH dependencies to the project. Create a new Java class and annotate it with @State to represent the benchmark method. Write the benchmark method in the class and annotate it with @Benchmark. Run the benchmark using the JMH command line tool.

When developing high-performance applications, C++ outperforms other languages, especially in micro-benchmarks. In macro benchmarks, the convenience and optimization mechanisms of other languages such as Java and C# may perform better. In practical cases, C++ performs well in image processing, numerical calculations and game development, and its direct control of memory management and hardware access brings obvious performance advantages.
