Archive for the 'Innotop' Category

How I patched InnoDB to show locks held

I’ve written before about how to figure out which connection is holding the InnoDB locks for which other connections are waiting. In other words, how to figure out who’s blocking you from getting work done when you get InnoDB lock timeouts or other InnoDB lock contention. The short and sweet: turn on the InnoDB lock monitor and use innotop to look at the locks held and waited-for.

The InnoDB lock monitor has a few major disadvantages, though:

  • It spews InnoDB status dumps into your log files
  • It prints tons of lock information you don’t want to see (it prints three lines of text for every row that’s locked, each of them in several formats just in case you need it!)
  • It can be so verbose that it crowds out the rest of the InnoDB status output, or even causes you not to see anything but a single lock

Basically, it’s written for the InnoDB developers, not for a MySQL DBA.

Fixing this requires changing the server and/or storage engine; there’s no configuration you can change. The easiest solution, in my view, is to a) turn off the verbose output b) print the locks held by default. Sure there are better ways, such as using INFORMATION_SCHEMA tables, but this is by far the lowest-hanging fruit.

By the way, I think the InnoDB developers are working on exporting some status to pluggable INFORMATION_SCHEMA tables in future releases.

Since MySQL is Free Software, I was able to patch InnoDB and MySQL the way I want them. The patch is attached to my feature request for fixing InnoDB lock output. It’s unlikely to be included in the MySQL server itself, but perhaps it’ll help someone else too.

With this patch, you get two new server variables, which you can set in either your my.cnf file, or dynamically via SET GLOBAL. By default, they are as follows:

mysql> show variables like 'innodb_show%';
+---------------------------+-------+
| Variable_name             | Value |
+---------------------------+-------+
| innodb_show_locks_held    | 10    | 
| innodb_show_verbose_locks | 0     | 
+---------------------------+-------+

The first is the number of locks to print for each transaction. The second is whether to print the verbose record dumps for each lock. (My advice is to leave the second variable at 0).

Now when you run SHOW INNODB STATUS, you’ll see something like the following in the TRANSACTIONS section:

---TRANSACTION 0 268216580, ACTIVE 27 sec, process no 16382, OS thread id 2424191888
2 lock struct(s), heap size 320
MySQL thread id 8, query id 949 localhost 192.168.0.5 xaprb
TABLE LOCK table `test/t1` trx id 0 268216580 lock mode IX
RECORD LOCKS space id 0 page no 2670602 n bits 72 index `PRIMARY` of table `test/t1` trx id 0 268216580 lock_mode X locks rec but not gap

I caused that output by doing a SELECT FOR UPDATE query on an InnoDB table in a transaction.

If this were all I did, it would still be a big help in figuring out who’s blocking whom. But I also made innotop smarter to take advantage of the new output. Now it aggregates locks held and waited-for in L mode, so you can see very quickly “something is waiting for a lock on this table, and something else has a lock on the same table.” This works fine even when you haven’t applied my patch, but my patch lets you debug lock waits much more cleanly.

And as a bonus, it’ll prevent your SHOW INNODB STATUS from being completely overwritten when you have a big deadlock.

All in all, it’s been a huge relief to have this applied to the servers I manage. Sometimes InnoDB’s status output used to drive me nuts. I stopped complaining and did something about it!

Technorati Tags:, , , ,

You might also like:

  1. How to debug InnoDB lock waits
  2. How to monitor InnoDB lock waits
  3. How to find out who is locking a table in MySQL
  4. How to give locking hints in MySQL
  5. A little-known way to cause a database deadlock

Version 1.6.0 of the innotop monitor for MySQL released

Download innotop

The 1.5.2 release of innotop contained two bugs, one very minor. The other was a crash because of the new functionality that aggregates results across many connections. I fixed them and released version 1.6.0, which I consider stable and ready for everyone to use. (My version naming convention for innotop is that even-numbered minor versions are for production use; odd-numbered, such as 1.5.2, are the development branch. That’s why I release them under the innotop-devel package).

What’s ahead for innotop 1.8? Here’s my current road map, some of which is already done:

Features for version 1.8:

* A test suite.
* Rename the variables the InnoDB parser outputs to match what MySQL has named them.
  http://dev.mysql.com/doc/refman/5.0/en/server-status-variables.html#option_mysqld_Innodb_buffer_pool_pages_data
* Support Google's patches:
  http://code.google.com/p/google-mysql-tools/wiki/InnodbStatus
  http://dammit.lt/2007/06/23/mysql-40-google-edition/
* Make InnoDBParser.pm smartly fill in the data it needs by looking in SHOW
  STATUS and SHOW VARIABLES and realizing if these already provide necessary
  data.
* Efficiency and speed optimizations.  Only fetch needed data from servers.
* Use SQL instead of all the extract_values stuff.
* New configuration screen with less duplicate code that plugins can add to.
* Add support for Falcon and solidDB.
* Support multiple server connections in all modes.
* Support incremental display in all modes.  Make incremental display a per-mode
  configuration setting.
* Tentative: Add a new mode for monitoring NDB clusters.
* Tentative: usability testing and if necessary, make usability enhancements.
* Tentative: Add support for pager if you want to see more than fits on screen.
* Tentative: Documentation and built-in help (get help on a key from help screen).

I wrote that roadmap a while ago. I don’t get much feedback on desired features, for the most part (maybe innotop already has too many features?). These are just things I either want to do very badly, such as write a test suite, or think would be nifty or fun, such as adding a pager. Your input is welcome.

Technorati Tags:, , ,

You might also like:

  1. innotop 1.4.0 released
  2. Version 0.1.106 of innotop MySQL/InnoDB monitor released
  3. Version 1.5.1 of the innotop MySQL monitor released
  4. Version 1.5.2 of the innotop MySQL monitor released
  5. How to monitor MySQL status and variables with innotop

Version 1.5.2 of the innotop MySQL monitor released

Download innotop

This release is part of the unstable 1.5 branch. Its features will ultimately go into the stable 1.6 branch. You can download it from the innotop-devel package.

The major change is I’ve ripped out the W (Lock Waits) mode and enabled innotop to discover not only what a transaction is waiting for, but what it holds too. The new mode that replaces W is L (Locks). My last article goes into more detail on this.

Technorati Tags:, , , , ,

You might also like:

  1. How to debug InnoDB lock waits
  2. How to monitor InnoDB lock waits
  3. Version 1.6.0 of the innotop monitor for MySQL released
  4. Version 1.5.1 of the innotop MySQL monitor released
  5. A look at innotop’s new features

How to debug InnoDB lock waits

This article shows you how to use a little-known InnoDB feature to find out what is holding the lock for which an InnoDB transaction is waiting. I then show you how to use an undocumented feature to make this even easier with innotop.

Background

One of the most common complaints I’ve heard from DBAs used to other database servers is “I can’t find out who holds the locks that are blocking all these connections and making them time out.” I feel your pain. Before I helped scale my employer’s systems to deal with larger volumes of data, InnoDB lock contention was a serious issue. And as far as I knew, you couldn’t find out who was holding locks. I knew you could see who was waiting for locks to be granted; that’s easy. You just run SHOW INNODB STATUS and look for the following text:

------------
TRANSACTIONS
------------
Trx id counter 0 4874
Purge done for trx's n:o < 0 4869 undo n:o < 0 0
History list length 21
Total number of lock structs in row lock hash table 2
LIST OF TRANSACTIONS FOR EACH SESSION:
---TRANSACTION 0 4873, ACTIVE 6 sec, process no 7142, OS thread id 1141152064 starting index read
mysql tables in use 1, locked 1
LOCK WAIT 2 lock struct(s), heap size 368
MySQL thread id 9, query id 173 localhost root Sending data
select * from t1 for update
——- TRX HAS BEEN WAITING 6 SEC FOR THIS LOCK TO BE GRANTED:
RECORD LOCKS space id 9 page no 3 n bits 72 index `PRIMARY` of table `test/t1` trx id 0 4873 lock_mode X waiting
…

That’s fine, but who holds the lock? I thought there was no way to find that out.

InnoDB Lock Monitor

Until I learned about the InnoDB Lock Monitor, that is. You enable it by running the following command:

CREATE TABLE innodb_lock_monitor(a int) ENGINE=INNODB;

It’s quite an ugly hack, but it turns out the table name is actually “magical.” It’s a special table name that tells InnoDB to start the lock monitor. You can stop it by dropping the table again.

This little-noticed feature makes InnoDB print out a slightly modified version of what you see with SHOW INNODB STATUS. The “slight modification” is to print out not only the locks the transaction waits for, but also those it holds. For example, here’s the transaction that holds the locks:

---TRANSACTION 0 4872, ACTIVE 32 sec, process no 7142, OS thread id 1141287232
2 lock struct(s), heap size 368
MySQL thread id 8, query id 164 localhost root
TABLE LOCK table `test/t1` trx id 0 4872 lock mode IX
RECORD LOCKS space id 9 page no 3 n bits 72 index `PRIMARY` of table `test/t1` trx id 0 4872 lock_mode X
Record lock, heap no 1 PHYSICAL RECORD: n_fields 1; compact format; info bits 0
 0: len 8; hex 73757072656d756d; asc supremum;;

Record lock, heap no 2 PHYSICAL RECORD: n_fields 3; compact format; info bits 0
 0: len 4; hex 80000001; asc     ;; 1: len 6; hex 000000000d35; asc      5;; 2: len 7; hex 800000002d0110; asc     -  ;;

That’s fine, but there are, ah, limitations. As the manual says, InnoDB periodically prints out this text — essentially spewing InnoDB’s guts — to its standard output. This gets redirected to the server error log in any sane installation. Who’s looking there? And it gets printed out at long intervals, which seems to be about every 16 seconds on the machines I use.

Plus, if you’ve looked at the result, you’ll understand this is not something you want to search through manually looking for data. The output can be absolutely huge. What DBA wants to pore over thousands of hex-dumped rows from the table just to answer the question “who holds that lock?”

All in all, this is not very convenient (yep, I know that’s an understatement).

Slightly more convenient

What’s a little more convenient than combing through all that text by hand is writing a program to parse InnoDB’s status output. You don’t have to, though. That’s what I wrote innotop to do. And I’ve just released version 1.5.2, which at long last has the ability to watch a log file as well as connecting to server(s).

Here’s how this works: you start innotop, and press the L key to switch to Lock mode. This replaces the old Lock Wait mode, which was only able to monitor the InnoDB lock waits you see in the normal output of SHOW INNODB STATUS.

This mode shows you something like the following:

_____________________________ InnoDB Locks __________________________
CXN   ID  Type    Waiting  Wait   Active  Mode  DB    Table  Index
file  12  RECORD        1  00:10   00:10  X     test  t1     PRIMARY
file  12  TABLE         0  00:10   00:10  IX    test  t1
file  12  RECORD        1  00:10   00:10  X     test  t1     PRIMARY
file  11  TABLE         0  00:00   00:25  IX    test  t1
file  11  RECORD        0  00:00   00:25  X     test  t1     PRIMARY

That’s helpful! I can see the locks held and waited for in a nice tabular format. It’s pretty easy to see connection 11 is blocking connection 12.

This is still pretty inconvenient, though. To get access to the server’s error log, I have to run innotop on the database server machine itself. Is there a better way?

Even better

There is, in fact, but I discovered it completely by accident. It’s not documented, but the extra information doesn’t just get printed to the server log. It also shows up in SHOW INNODB STATUS! Now that’s a nice surprise. It means innotop can get lock information from a normal connection instead of monitoring a log file.

After discovering this, I immediately added some more features to innotop. There are now hot-keys in L mode to enable and disable the lock monitor. Now you can press L, press the ‘a’ key to start the lock monitor, see what’s blocking the waiting transaction, press ‘o’ to stop the lock monitor, and you’re done.

Best yet

I’m sure you InnoDB administrators already recognize what an improvement this is over the options you previously had (essentially, you didn’t have any). There’s still a long way to go, though. Locks could be in the INFORMATION_SCHEMA or in a SHOW LOCKS command. I won’t speculate on why they aren’t already.

Of course, the upcoming Falcon storage engine already has better features for debugging lock contention than this. But my guess is it’ll be a long time before Falcon has the market share InnoDB has. All things considered, InnoDB is a pretty nice piece of software.

Conclusion

Download innotop

The conclusion to this whole article is: use innotop if you use InnoDB. Heck, use it if you use MySQL at all. It makes a lot of things a lot easier, not just debugging InnoDB lock contention. Feedback is welcome — just use the Sourceforge bug tracker, forums, and mailing lists.

Technorati Tags:, , , , ,

You might also like:

  1. How to monitor InnoDB lock waits
  2. How I patched InnoDB to show locks held
  3. How to find out who is locking a table in MySQL
  4. Version 1.5.2 of the innotop MySQL monitor released
  5. A little-known way to cause a database deadlock

Version 1.5.1 of the innotop MySQL monitor released

Download innotop

This release is part of the unstable 1.5 branch. Its features will ultimately go into the stable 1.6 branch. You can download it from the innotop-devel package.

The major change is a new Command Summary’ mode (switch to this mode with the ‘C’ key) that’s similar to mytop’s ‘c’ mode. It shows you the relative size of variables from SHOW STATUS and SHOW VARIABLES. Here’s a sample:

Command Summary (? for help) localhost, 25+07:16:43, 2.45 QPS, 3 thd, 5.0.40

_____________________ Command Summary _____________________
Name                    Value    Pct     Last Incr  Pct    
Select_scan             3244858  69.89%          2  100.00%
Select_range            1354177  29.17%          0    0.00%
Select_full_join          39479   0.85%          0    0.00%
Select_full_range_join     4097   0.09%          0    0.00%
Select_range_check            0   0.00%          0    0.00%

The default is to show the Com_* variables, but I’ve used a different prefix to illustrate that you can view any variables you want. You just choose the prefix. Useful ones are Select_, Handler_ and Sort_. This gives you instant insight into the kind of work your server is doing. You can see in the sample above that the kinds of joins the server does is healthily balanced towards scans and ranges on the first table. The server does very few full joins, full range joins, and range-check query plans (this is good).

The example shows one server, as you can see by the first line. Naturally, you can monitor many servers in aggregate, and it’s configured to do this by default if you’re watching more than one server. However, there’s a bug in the percentage columns when you do that (the Value columns are accurate when aggregated). I have a fix in mind for that, which will also fix many other things that cause me (and you) too much work when customizing innotop. But that’ll come later. I feel this is good enough for now, since the main use for this mode is when you’re just trying to familiarize yourself with a server, perhaps at a consulting job, or when reading someone’s tuning tutorial or the like.

Technorati Tags:, , , ,

You might also like:

  1. The innotop MySQL and InnoDB monitor
  2. How to monitor MySQL status and variables with innotop
  3. Version 1.6.0 of the innotop monitor for MySQL released
  4. Version 0.1.106 of innotop MySQL/InnoDB monitor released
  5. Version 0.1.123 of innotop released

innotop 1.5.0 released

Download innotop

Version 1.5.0 of the innotop MySQL and InnoDB monitor is out. This release is the first in the unstable 1.5.0 branch, which will eventually become the stable 1.6 branch. I’m beginning to merge the various branches I’ve made to support some of our needs at my employer. This first release adds some major new features and prepares for some other large improvements and new features.

What’s new

Here’s what’s new:

  • Added plugin functionality.
  • Added group-by functionality.
  • Moved the configuration file to a directory.
  • Enhanced filtering and sorting on pivoted tables.
  • Many small bug fixes.

Plugins

Plugins let you hook custom code into innotop. Your custom Perl module can extend or change innotop without touching its source code, and all you have to do is drop it into a directory and activate it (sound familiar to you WordPress users?). As an example of how this is useful, about two dozen lines of code lets me add “program” and “unix_pid” columns into the Query List and InnoDB Transaction List modes. These show the originating program and PID for connections by querying tables in which this data is stored. The plugin adds the columns and expressions for them, and then adds the data in by using innotop’s own DBI connections.

There’s an example plugin in the documentation.

Grouping

This functionality lets you apply something like a SQL GROUP BY to a table. There are some built-in rules (press the ‘=’ key in Q or T mode; it’s easier if you hide the header with the ‘h’ key first).

The built-in rules let you group connections or transactions by status. They also automagically show a ‘count’ column, which is there but hidden until the grouping is applied. Now you can see how many connections are in what status. Here’s a screenshot of before and after:

innotop ungrouped

innotop grouped

You can toggle this on and off easily with the ‘=’ key on any table. (Most tables don’t have default group-by expressions, though, so you’ll have to read the docs to learn more about that. As with any features, let me know if you have a useful default you want me to include in innotop).

Notes

Don’t be scared by the “unstable” designation. It only means that I’m getting ready for a lot of changes that don’t belong in a stable branch; this release should generally be as good quality as any other. And I don’t want to use a naming scheme like “innotop-6.0-pre-alpha-1_rel5″. When I release a version I don’t think is good quality, I’ll let you know ;-) Generally I’m going to confine that code to the Subversion repository.

As an aside, both this and the MySQL Toolkit project are becoming more popular, and as that happens, I’m also getting busier — among other things, I’m writing a book! I must say SourceForge is great in some ways for helping to manage the project, but a lot of extra work in others. For example, it created a bunch of default forums, trackers, and settings when I created the projects, and that’s been pretty hard to slog through. The documentation system is not useful for my project. I think I’ve finally figured out how to get emails when people submit bug reports. I’m also trying to automate the tedious release process as much as I can, and it’s not proving easy. I don’t mean this to be a litany of woes, because I know they and I are doing our respective bests; it’s more of a commentary on the increased work that comes with a “generic, flexible” system — which is what people always seem to want, until they get it. I’m sure you all know what I mean!

Please go download, use, write plugins, and find and report bugs (via the sourceforge tracker, of course)! And happy innotop-ing.

Technorati Tags:, ,

You might also like:

  1. Version 1.5.2 of the innotop MySQL monitor released
  2. Version 1.6.0 of the innotop monitor for MySQL released
  3. A look at innotop’s new features
  4. Version 1.5.1 of the innotop MySQL monitor released
  5. What I’ve been doing lately

innotop is available from openSUSE buildservice

RPM packages for innotop, a flexible and powerful MySQL and InnoDB monitor I wrote, are now available through the openSUSE buildservice, which builds RPMS on several platforms:

Thanks to Lenz Grimmer, SUSE Linux, and Dr. Peter Poeml for making this happen.

Technorati Tags:, , ,

You might also like:

  1. innotop version 1.0 released
  2. The innotop MySQL and InnoDB monitor
  3. How to install innotop

innotop version 1.4.3 released

Download innotop

Version 1.4.3 of the innotop MySQL and InnoDB monitor is out. This release fixes some minor bugs and feature annoyances, and at last innotop has thorough documentation, available online!

What’s new

Here’s what’s new:

  • Added standard –version command-line option
  • Changed colors to cyan instead of blue; more visible on dark terminals.
  • Added information to the filter-choosing dialog.
  • Added column auto-completion when entering a filter expression.
  • Changed Term::ReadKey from optional to mandatory.
  • Clarified username in password prompting.
  • Ten thousand words of documentation! Documentation is embedded in innotop, installed as a man page, and available online.

Bugs fixed:

  • innotop crashed in W mode when InnoDB status data was truncated.
  • innotop didn’t display errors in tables if debug was enabled.
  • The colored() subroutine wasn’t being created in non-interactive mode.
  • Don’t prompt to save password except the first time.

What’s next

I don’t know how much time I’ll get to put into this in the coming months, but there’s already a lot of half-finished functionality in the Subversion repository, including the ability to write innotop plugins. If you’re interested, the code is in the trunk and in various branches.

Hopefully I’ll get time to work on some of that before the year is out.

Technorati Tags:, , , , ,

You might also like:

  1. Version 0.1.106 of innotop MySQL/InnoDB monitor released
  2. innotop version 1.0 released
  3. What to do when innotop crashes
  4. innotop 1.4.2 released
  5. Version 0.1.132 of innotop released

Slides for the innotop workshop at MySQL Conference and Expo 2007

Speaker at MySQLConf 2007

The slides for my innotop presentation at the recent MySQL Conference have been posted, along with other presenter’s slides, on the conference presentations page. Love that stock photography!


Technorati Tags:

You might also like:

  1. The innotop session at MySQLConf 2007
  2. Like it or not, it is the MySQL Conference and Expo
  3. MySQL Conference and Expo 2007 Audio
  4. Baron Schwartz on a podcast at MySQL Conference and Expo 2008
  5. My presentations at the 2008 MySQL Conference and Expo

innotop 1.4.2 released

Download innotop

This release of the innotop MySQL and InnoDB monitor is a major upgrade in terms of functionality, code quality, and interface consistency. It is the result of me working for over a month to get innotop into shape for the recent MySQL Conference and Expo. Here’s a summary of the changes:

Major changes

  • Quick-filters to easily filter any column in any display
  • Compatibility with MySQL 3.23 through 6.0
  • Improved error handling when a server is down, permissions denied, etc
  • Use additional SHOW INNODB STATUS information in 5.1.x
  • Make all modes use tables consistently, so they can all be edited, filtered, colored and sorted consistently
  • Combine V, G and S modes into S mode, with v, g, and s hot-keys
  • Let DBD driver read MySQL option files; permit connections without user/pass/etc
  • Compile SQL-like expressions into Perl subroutines; eliminate need to know Perl
  • Do not save all config data to config file, only save user’s customizations
  • Rewritten and improved command-line option handling
  • Added –count, –delay, and other command-line options to support run-and-exit operation
  • Improve built-in variable sets
  • Improve help screen with three-part balanced-column layout
  • Simplify table-editor and improve hotkey support
  • Require Perl to have high-resolution time support (Time::HiRes)
  • Help the user choose a query to analyze or kill
  • Enable EXPLAIN, show-full-query in T mode just like Q mode
  • Let data-extraction access current, previous and incremental data sets all at once

Minor changes

  • Column stabilizing for Q mode
  • New color rules for T, Q, W modes
  • Apply slave I/O filter to Q mode
  • Improve detection of server version and other meta-data
  • Make connection timeout a config variable
  • Improve cross-version-compatible SQL syntax
  • Get some information from the DBD driver instead of asking MySQL for it
  • Improved error messages
  • Improve server group creation/editing
  • Improve connection/thread killing
  • Fix broken key bindings and restore previously mapped hot-keys for choosing columns
  • Some documentation updates (but not nearly enough)
  • Allow the user to specify graphing char in S mode (formerly G mode)
  • Allow easy switching between variable sets in S mode
  • Bind ‘n’ key globally to choose the ‘next’ server connection
  • Bind ‘%’ key globally to filter displayed tables
  • Allow aligning columns on the decimal place for easy readability
  • Add hide_hdr config variable to hide column headers in tables
  • Add a feature to smartly run PURGE MASTER LOGS in Replication mode
  • Enable debug mode as a globally configurable variable
  • Improve error messages when an expression or filter doesn’t compile or has a run-time error; die on error when debug is enabled
  • Allow user-configurable delays after executing SQL (to let the server settle down before taking another measurement)
  • Add an expression to show how long until a transaction is finished
  • Add skip_innodb as a global config variable
  • Add ‘%’ after percentages to help disambiguate (user-configurable)
  • Add column to M mode to help see how fast slave is catching up to master

Bug fixes

  • T and W modes had wrong value for wait_status column
  • Error tracking on connections didn’t reset when the connection recovered
  • wait_timeout on connections couldn’t be set before MySQL 4.0.3
  • There was a crash on 3.23 when wiping deadlocks
  • Lettercase changes in some result sets (SHOW MASTER/SLAVE STATUS) between MySQL versions crashed innotop
  • Inactive connections crashed innotop upon access to DBD driver
  • set_precision did not respect user defaults for number of digits
  • –inc command-line option could not be negated
  • InnoDB status parsing was not always parsing all needed information
  • S mode (formerly G mode) could crash trying to divide non-numeric data
  • M table didn’t show Slave_open_temp_tables variable; incorrect lettercase
  • DBD drivers with broken AutoCommit would crash innotop
  • Some key bindings had incorrect labels
  • Some config-file loading routines could load data for things that didn’t exist
  • Headers printed too often in S mode
  • High-resolution time was not used even when the user had it
  • Non-interactive mode printed blank lines sometimes
  • Q-mode header and statusbar showed different QPS numbers
  • Formulas for key-cache and query-cache hit ratios were wrong
  • Mac OS “Darwin” machines were mis-identified as Microsoft Windows
  • Some multiplications crashed when given undefined input
  • The commify transformation did not check its input and could crash
  • Specifying an invalid mode on the command line or config file could crash innotop

What’s next

In a word: documentation.

But that’s not all. Take a look at the roadmap for the project, and you find such features as mutex monitoring, the ability to monitor a file instead of connecting to a MySQL server, and much more. Some of this functionality is already done, but it’s not mature enough to release (feel free to use the latest trunk source, which is what I use every day; it usually works just fine).

Technorati Tags:No Tags

You might also like:

  1. What to do when innotop crashes
  2. The innotop MySQL and InnoDB monitor
  3. A look at innotop’s new features
  4. How to install innotop on Microsoft Windows
  5. Version 1.5.1 of the innotop MySQL monitor released