This is a module for monitoring the MySQL SQL database server health (latest versions in the 4 series). Carefully chosen relevant indicators are displayed, allowing the administrator to set meaningful thresholds.

On UNIX type platforms, it requires the mysqltcl package (at http://www.xdobry.de/mysqltcl/) for connection via the native MySQL protocol, or the tclodbc package (at http://tclodbc.sourceforge.net/) for connection via ODBC (Open DataBase Connectivity).
On Windows platforms, please read the install.txt file.

Data is drawn from the SHOW STATUS and SHOW VARIABLES query results and initially displayed in 1 table:

view of the myhealth module tables

There are 2 data columns:

The data rows are:

Error handling:

When an error occurs (communicating with the database server or any other type), cells in the version and uptime rows become empty, while all other cells are set to void numeric values (displayed as ?). A descriptive error message is also generated in such a case.

Optimizing queries:

Please see the MySQL documentation about optimizing queries and the EXPLAIN command.
Use EXPLAIN to get see what is wrong. Do it not just for SELECT queries but also for UPDATE and DELETE queries.
For example, on a query such as:

UPDATE table SET ... WHERE x = 0
try:
EXPLAIN SELECT * FROM table WHERE x = 0

Module options:

Examples:

$ moodss myhealth --host 1.2.3.4
$ moodss myhealth --host dbserver.company.com --port 3307
$ moodss myhealth --host dbserver.company.com --user status --password xxx
$ moodss myhealth --dsn mydb --user status --password xxx

Threads support:

If you use Tcl/Tk 8.4.1 or above with the Tcl Threads package 2.5 or above, then the module will use threads for the database connection. This means that the core (moodss user interface for example) cannot be hung (moodss menus not responding, window not being updated, ...) when the connection with the database is failing.
You can check that moodss actually is in threads mode by looking at the bottom line of the module help window, while moodss is running: a status line will indicate whether threads are in use.