Drupal 6 Performance Optimization Using DB Maintenance and Boost: Part 1

8 min read

These are not required modules, but rather are recommended modules to add to your Drupal performance arsenal. The way this article will work is that we’ll outline the purpose of each module, install and configure it, and then use it on a specific topic, for example, within your site. This will give you some practice using contributed Drupal modules and also a look at the variety of performance based modules that are available from the Drupal project community.

Using the DB Maintenance module

The DB Maintenance module can be used to optimize your MySQL database tables. Depending on the type of database you are running, the module allows you to use a function called OPTIMIZE TABLE, which troubleshoots and then optimizes various errors in your MySQL tables. For MyISAM tables, the OPTIMIZE TABLE will repair your database tables if they have deleted rows. For BDB and InnoDB types of tables the function will rebuild the entire table. You can use this module in tandem with phpMyAdmin to determine if you do or do not need to optimize your database tables. The benefit of this module is that it allows you to keep your database optimized and defragmented, similar to keeping your computer hard drive optimized and defragmented so that it runs faster, and you can do all this from the Drupal administrative interface.

The project page where you can download the module is here: http://drupal.org/project/db_maintenance.

Download the module tar.gz and extract it to your desktop. Then, upload the files through FTP, or upload and extract using a cPanel utility if your host provides this. The module should go in your /sites/all/modules directory.

Once you upload and extract the module folder, enable the module on your modules admin page and save your configuration. We’ll use the version that’s recommended for Drupal 6.x, which is 6.x-1.1. You can try out the beta version, but you should not run this beta version on a production level website unless you’ve tested it sufficiently in a sandbox environment.

Drupal 6 Performance Tips

Once you save your module configuration, you’ll notice that the module adds a link to its settings and configuration page under your main Site configuration section. Go to Site configuration | DB maintenance to access the configuration admin screen for the module. The DB maintenance screen will contain a checkbox at the top allowing you to log OPTIMIZE queries. If you check this box, your watchdog log entries module will log all table optimization entries and give you detailed information on the tables that were optimized.

At the time of writing this article, the 1.1 version of the DB Maintenance module contained bugs that caused glitches with the method of adding this module’s queries to the recent log entries or prevented this entirely. You may also experience these glitches. The module’s developers are aware of the issues because they have been posted to the issue queue at http://drupal.org/ on the module project page.

Let’s go ahead and check this box. You can then select the frequency with which you would like to run the optimization. The choices are daily, Run during every cron, Hourly, Bi-Hourly, Daily, Bi-Daily, Weekly, Bi-Weekly, Monthly, and Bi-Monthly. You can also click on the Optimize now link to force the optimization to occur immediately without scheduling in advance. We’ll click on this link for the purpose of this demo, but in future you may want to schedule the optimization. We’ll then run a cron job through the Status report, or a module such as Poormanscron, and the tables will be optimized.

Drupal 6 Performance Tips

Next, you can select the tables in your Drupal database that you want to optimize. A nice feature of this module is that it allows you to multi select database tables, only select a few tables, or just one table. This gives you the same flexibility and functionality as your phpMyAdmin tool, but you can run everything from within your Drupal interface. It’s like a phpMyAdmin lite version right in your Drupal site. This is a preferred option for those developers who may not have immediate access to a client’s phpMyAdmin or a host’s database management utility.

Choose a selection of tables that you want to optimize, or select all the tables. For this demo I’m going to optimize all of my content type tables, so I’ll select all of those. I’ll also optimize my block tables:


Once you’ve selected the tables you want to optimize, click on the Optimize now link.

Drupal 6 Performance Tips

As with any module or optimization enhancement that you make to your Drupal site, it is good practice to run a full backup of your MySQL database before performing any maintenance, including optimizing tables using the DB Maintenance module. This way you will have a full backup of your data if you run into any issues that the module could potentially create. It’s better to play it safe and perform the backup first.

Once you click on the Optimize now link, you should receive a message notifying you that the Database tables are optimized.

This concludes our discussion and walkthrough of using the DB Maintenance module. Let’s now turn to the Boost module and use it to speed up our site page and content loads.

Using the Boost module

We’ re going to turn our attention to the Boost module in this section. Boost is a contributed module that allows you to run incredibly advanced static page caching on your Drupal site. This caching mechanism will help to increase performance and scalability on your site, especially if it gets heavy traffic and anonymous page visits, and it is on a shared hosting environment. This is usually the first contributed performance-based module to turn to for help when you host your Drupal site on a shared server. Developers running Drupal sites on shared servers and running sites that serve predominantly anonymous Drupal users will definitely want to try out this module. It’s also a fun module to use from a technical standpoint because you can see the results immediately, as you configure it.

The Drupal project page for the module is here: http://drupal.org/project/boost. There is a wealth of detailed information about the module on this project page, including announcements about upcoming conference presentations that focus on the Boost module, testimonials, install instructions, and links to documentation and associated modules that you may want to run alongside Boost. It is very popular and has quite a following in the Drupal development community. I definitely recommend reading about this module and all of its install and configuration instructions in detail before attempting to use it.

The install paragraph suggests reading through the module README.txt file before running the install for details on how the module works. There are also detailed instructions and documentation on the module here: http://drupal.org/node/545664.

Note that the one requirement to use this module is that your Drupal site must have clean URLs configured and enabled. It’s a good idea to make sure you are running clean URLs on your site before you start installing and configuring Boost.

Additionally, there are some recommended modules that the developers encourage you to install in tandem with the Boost module. We will install two of these modules: Global Redirect and Transliteration. The Global Redirect module runs a number of checks on your website including the following:

  • Checks the current URL for a Drupal path alias and does a 301 redirect to the URL if it is not being used.
  • Checks the current URL for a trailing / and removes the slash if it’s present in Drupal URLs.
  • Checks if the current URL is the same as the site’s front page and redirects to the front page if it locates a match.
  • Checks to see if you are using clean URLs. If you do have clean URLs enabled, this module ensures URLs are accessed using the clean URL method rather than an unclean method (for example, ?q=user).
  • Checks access to the URL. If a user does not have permissions to view the URL, then no redirects are allowed. This helps to protect private URL aliases.
  • Checks to ensure the alias matches the URL it is aliasing. So, if you have a URL alias such as /about and this directs to node/23, then a user on your site can access the page using either of those URLs.
  • The Transliteration module removes white space and non-ASCII characters in your URLs. For example, it will try and add underscores to fill white space in a URL.

Installing and enabling these two modules will help remove glitches and errors in your site’s path structure.

If you haven’t already, we’ll also take the time now to install the Poormanscron module and set up and configure automatic cron runs instead of having to continue running cron manually. We’ll return to installing and configuring Poormanscron later in this article, but just keep it on your radar for now.

Let’s go ahead and install the Boost module and take a closer look at some of its features.


Please enter your comment!
Please enter your name here