ndoutils Query optimisation
Thomas Guyot-Sionnest
dermoth at aei.ca
Wed Aug 20 14:08:24 CEST 2008
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
On 20/08/08 04:56 AM, Alan Cooper wrote:
> I am having problem scaling up a system we use to gather status data
> from the NDO db:
>
> The query I currently use is:-
>
> SELECT
> obj1.name1 AS host_name,
> nagios_hoststatus.problem_has_been_acknowledged,
> nagios_hoststatus.scheduled_downtime_depth,
> nagios_hosts.alias
> FROM `nagios_hoststatus`
> LEFT JOIN nagios_objects as obj1 ON
> nagios_hoststatus.host_object_id=obj1.object_id
> LEFT JOIN nagios_hosts ON
> nagios_hoststatus.host_object_id=nagios_hosts.host_object_id
> LEFT JOIN nagios_hostgroup_members ON
> nagios_hoststatus.host_object_id=nagios_hostgroup_members.host_object_id
> LEFT JOIN nagios_hostgroups ON
> nagios_hostgroups.hostgroup_id=nagios_hostgroup_members.hostgroup_id
> WHERE nagios_hosts.config_type='1'
> AND nagios_hoststatus.state_type > 0
> AND nagios_hoststatus.current_state > 0
> AND (nagios_hostgroups.alias = "hostgroup1"
> OR nagios_hostgroups.alias = "hostgroup3"
> ORDER BY host_name ASC;
>
> This gives us list of hosts and their aliases as well as their
> acknowledgement and downtime status which allows us to get different
> views on a status screen for different purposes.
>
> The problem is, due to the number of joins and the fact that these
> SELECTS are being called several times a minute, we are generating very
> high load on the database as data is being copied into temporary tables
> and each query is taking >20 seconds, and eventually it just all breaks
> down and no queries succeed.
>
> Does anyone have any suggestions for improving performance of this query?
I'm not a SQL guru, but here's some thing I'd try... You may get better
help from SQL/MySQL communities.
* Make sure obj1.name1 is indexed (or is a PK)
* Make sure every columns in the JOINs are indexed/PKs
* Try removing the ORDER BY (i.e. sort it in the application running the
query instead)
You can also try importing the tables to a different engine (i.e. InnoDB
vs MyISAM) in a new db or with different names, and benchmark it on them.
Hope this helps...
- --
Thomas
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.6 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org
iD8DBQFIrAk46dZ+Kt5BchYRAs2pAJ4+aNdcKX8mjO++F6U0VU2oL2J1mgCgxoR5
i8X1OZ97tsHkdbwDAYNvvuw=
=DrYE
-----END PGP SIGNATURE-----
-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
Nagios-users mailing list
Nagios-users at lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/nagios-users
::: Please include Nagios version, plugin version (-v) and OS when reporting any issue.
::: Messages without supporting info will risk being sent to /dev/null
More information about the Users
mailing list