Zowel in mijn boeken als hier niets kunnen vinden over het volgende probleem: Ik wil het aantal queries opvragen die sinds de login zijn gedaan. Houdt MySQL dit ergens bij (in een logfile bijvoorbeeld), of nog mooier: bestaat er iets als een query om stats of historie op te vragen?
Waarom hou je het zelf niet bij in je applicatielaag? Voor zover ik weet houdt MySQL het zelf niet bij. Sowieso is het erg eenvoudig om het zelf op te lossen in je aanroepende code.
'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.
nouja, het is vrij veel code, dus zelf bijhouden wilde ik juist vermijden. vandaar de vraag. maar ik ben idd bang dat er niets anders opzit.
SHOW STATUSxilent_xage schreef op zaterdag 11 februari 2006 @ 23:02:
...bestaat er iets als een query om stats of historie op te vragen?
(of denk ik nu te simpel?
zie http://dev.mysql.com/doc/refman/4.1/en/show-status.html
Knockwurst.
Dan kun je toch een klasse maken met daarin een query-functie die niet meer doet dan mysql_query aanroepen en een intern tellertje ophogen, dat je vervolgens met een andere functie op kan halen?xilent_xage schreef op zaterdag 11 februari 2006 @ 23:43:
nouja, het is vrij veel code, dus zelf bijhouden wilde ik juist vermijden. vandaar de vraag. maar ik ben idd bang dat er niets anders opzit.
Een losse functie die een global variabele update kan natuurlijk ook, maar dat is wel een stuk viezer.
'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.
Misschien kun je de stats pagina van phpmyadmin checken? Die laat het ook zien...
Ook heb ik hier een script dat output genereerd voor MRTG. Dit script gebruikt een standaard meegeleverde tool van MySQL namelijk 'MySQLAdmin'
Tevens levert de query: "SHOW STATUS;" de volgende output als regels. Iedere "<value>" is dus een record die wordt teruggegeven. Het werd een wat lange lijst, dus heb alle 163 records ff achter elkaar gezet t.b.v. het topic.
. Met een beetje code heb je dus alle info die je kunt bedenken...
"Aborted_clients", "Aborted_connects", "Binlog_cache_disk_use", "Binlog_cache_use", "Bytes_received", "Bytes_sent", "Com_admin_commands", "Com_alter_db", "Com_alter_table", "Com_analyze", "Com_backup_table", "Com_begin", "Com_change_db", "Com_change_master", "Com_check", "Com_checksum", "Com_commit", "Com_create_db", "Com_create_function", "Com_create_index", "Com_create_table", "Com_dealloc_sql", "Com_delete", "Com_delete_multi", "Com_do", "Com_drop_db", "Com_drop_function", "Com_drop_index", "Com_drop_table", "Com_drop_user", "Com_execute_sql", "Com_flush", "Com_grant", "Com_ha_close", "Com_ha_open", "Com_ha_read", "Com_help", "Com_insert", "Com_insert_select", "Com_kill", "Com_load", "Com_load_master_data", "Com_load_master_table", "Com_lock_tables", "Com_optimize", "Com_preload_keys", "Com_prepare_sql", "Com_purge", "Com_purge_before_date", "Com_rename_table", "Com_repair", "Com_replace", "Com_replace_select", "Com_reset", "Com_restore_table", "Com_revoke", "Com_revoke_all", "Com_rollback", "Com_savepoint", "Com_select", "Com_set_option", "Com_show_binlog_events", "Com_show_binlogs", "Com_show_charsets", "Com_show_collations", "Com_show_column_types", "Com_show_create_db", "Com_show_create_table", "Com_show_databases", "Com_show_errors", "Com_show_fields", "Com_show_grants", "Com_show_innodb_status", "Com_show_keys", "Com_show_logs", "Com_show_master_status", "Com_show_ndb_status", "Com_show_new_master", "Com_show_open_tables", "Com_show_privileges", "Com_show_processlist", "Com_show_slave_hosts", "Com_show_slave_status", "Com_show_status", "Com_show_storage_engines", "Com_show_tables", "Com_show_variables", "Com_show_warnings", "Com_slave_start", "Com_slave_stop", "Com_stmt_close", "Com_stmt_execute", "Com_stmt_prepare", "Com_stmt_reset", "Com_stmt_send_long_data", "Com_truncate", "Com_unlock_tables", "Com_update", "Com_update_multi", "Connections", "Created_tmp_disk_tables", "Created_tmp_files", "Created_tmp_tables", "Delayed_errors", "Delayed_insert_threads", "Delayed_writes", "Flush_commands", "Handler_commit", "Handler_delete", "Handler_discover", "Handler_read_first", "Handler_read_key", "Handler_read_next", "Handler_read_prev", "Handler_read_rnd", "Handler_read_rnd_next", "Handler_rollback", "Handler_update", "Handler_write", "Key_blocks_not_flushed", "Key_blocks_unused", "Key_blocks_used", "Key_read_requests", "Key_reads", "Key_write_requests", "Key_writes", "Max_used_connections", "Not_flushed_delayed_rows", "Open_files", "Open_streams", "Open_tables", "Opened_tables", "Qcache_free_blocks", "Qcache_free_memory", "Qcache_hits", "Qcache_inserts", "Qcache_lowmem_prunes", "Qcache_not_cached", "Qcache_queries_in_cache", "Qcache_total_blocks", "Questions", "Rpl_status", "Select_full_join", "Select_full_range_join", "Select_range", "Select_range_check", "Select_scan", "Slave_open_temp_tables", "Slave_retried_transactions", "Slave_running", "Slow_launch_threads", "Slow_queries", "Sort_merge_passes", "Sort_range", "Sort_rows", "Sort_scan", "Table_locks_immediate", "Table_locks_waited", "Threads_cached", "Threads_connected", "Threads_created", "Threads_running", "Uptime".
Ook heb ik hier een script dat output genereerd voor MRTG. Dit script gebruikt een standaard meegeleverde tool van MySQL namelijk 'MySQLAdmin'
Tevens levert de query: "SHOW STATUS;" de volgende output als regels. Iedere "<value>" is dus een record die wordt teruggegeven. Het werd een wat lange lijst, dus heb alle 163 records ff achter elkaar gezet t.b.v. het topic.
"Aborted_clients", "Aborted_connects", "Binlog_cache_disk_use", "Binlog_cache_use", "Bytes_received", "Bytes_sent", "Com_admin_commands", "Com_alter_db", "Com_alter_table", "Com_analyze", "Com_backup_table", "Com_begin", "Com_change_db", "Com_change_master", "Com_check", "Com_checksum", "Com_commit", "Com_create_db", "Com_create_function", "Com_create_index", "Com_create_table", "Com_dealloc_sql", "Com_delete", "Com_delete_multi", "Com_do", "Com_drop_db", "Com_drop_function", "Com_drop_index", "Com_drop_table", "Com_drop_user", "Com_execute_sql", "Com_flush", "Com_grant", "Com_ha_close", "Com_ha_open", "Com_ha_read", "Com_help", "Com_insert", "Com_insert_select", "Com_kill", "Com_load", "Com_load_master_data", "Com_load_master_table", "Com_lock_tables", "Com_optimize", "Com_preload_keys", "Com_prepare_sql", "Com_purge", "Com_purge_before_date", "Com_rename_table", "Com_repair", "Com_replace", "Com_replace_select", "Com_reset", "Com_restore_table", "Com_revoke", "Com_revoke_all", "Com_rollback", "Com_savepoint", "Com_select", "Com_set_option", "Com_show_binlog_events", "Com_show_binlogs", "Com_show_charsets", "Com_show_collations", "Com_show_column_types", "Com_show_create_db", "Com_show_create_table", "Com_show_databases", "Com_show_errors", "Com_show_fields", "Com_show_grants", "Com_show_innodb_status", "Com_show_keys", "Com_show_logs", "Com_show_master_status", "Com_show_ndb_status", "Com_show_new_master", "Com_show_open_tables", "Com_show_privileges", "Com_show_processlist", "Com_show_slave_hosts", "Com_show_slave_status", "Com_show_status", "Com_show_storage_engines", "Com_show_tables", "Com_show_variables", "Com_show_warnings", "Com_slave_start", "Com_slave_stop", "Com_stmt_close", "Com_stmt_execute", "Com_stmt_prepare", "Com_stmt_reset", "Com_stmt_send_long_data", "Com_truncate", "Com_unlock_tables", "Com_update", "Com_update_multi", "Connections", "Created_tmp_disk_tables", "Created_tmp_files", "Created_tmp_tables", "Delayed_errors", "Delayed_insert_threads", "Delayed_writes", "Flush_commands", "Handler_commit", "Handler_delete", "Handler_discover", "Handler_read_first", "Handler_read_key", "Handler_read_next", "Handler_read_prev", "Handler_read_rnd", "Handler_read_rnd_next", "Handler_rollback", "Handler_update", "Handler_write", "Key_blocks_not_flushed", "Key_blocks_unused", "Key_blocks_used", "Key_read_requests", "Key_reads", "Key_write_requests", "Key_writes", "Max_used_connections", "Not_flushed_delayed_rows", "Open_files", "Open_streams", "Open_tables", "Opened_tables", "Qcache_free_blocks", "Qcache_free_memory", "Qcache_hits", "Qcache_inserts", "Qcache_lowmem_prunes", "Qcache_not_cached", "Qcache_queries_in_cache", "Qcache_total_blocks", "Questions", "Rpl_status", "Select_full_join", "Select_full_range_join", "Select_range", "Select_range_check", "Select_scan", "Slave_open_temp_tables", "Slave_retried_transactions", "Slave_running", "Slow_launch_threads", "Slow_queries", "Sort_merge_passes", "Sort_range", "Sort_rows", "Sort_scan", "Table_locks_immediate", "Table_locks_waited", "Threads_cached", "Threads_connected", "Threads_created", "Threads_running", "Uptime".
[ Voor 26% gewijzigd door _reboot_ op 12-02-2006 00:33 ]
TS wil het aantal queries sinds de login van een bepaalde gebruiker hebben. SHOW STATUS geeft AFAIK alleen het aantal queries sinds de start van de server. Lijkt me dus niet helemaal bruikbaar.
'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.
Dan bereken je toch de totale query's voordat je pagina oproept (dus meteen na <?php) en dan bereken je het verschil op 't einde van de pagina - 1, omdat er ook al één query nodig is voor SHOW STATUS ?
Anders maak je een functie like mysql_query waarin $int++; wordt gedaan...
Anders maak je een functie like mysql_query waarin $int++; wordt gedaan...
ligt eraan of je je queries door een losse functie laat uitvoeren of niet. Als je een functie maakt die de query uitvoert zodat je centraal je errors, escapen en dat soort meuk regelt kan je heel makkelijk een tellertje toevoegen (bijvoorbeeld aantal queries/pagina)xilent_xage schreef op zaterdag 11 februari 2006 @ 23:43:
nouja, het is vrij veel code, dus zelf bijhouden wilde ik juist vermijden. vandaar de vraag. maar ik ben idd bang dat er niets anders opzit.
de eerse methode gaat wel werken, maar waarschijnlijk niet als het zo druk is als GOT. Aan de andere kant zijn de meeste paginas wel binnen de paar 10en van een seconde te bakken, dus moet je al meer dan zeg 50 paginas in een seconde samenstellen.lennartkocken schreef op zondag 12 februari 2006 @ 00:59:
Dan bereken je toch de totale query's voordat je pagina oproept (dus meteen na <?php) en dan bereken je het verschil op 't einde van de pagina - 1, omdat er ook al één query nodig is voor SHOW STATUS ?
Anders maak je een functie like mysql_query waarin $int++; wordt gedaan...
optie twee: dat zeg ik
[ Voor 41% gewijzigd door rooiekool op 12-02-2006 01:06 . Reden: reactie lennartkocken ]
Pagina: 1