import time import MySQLdb DATABASE_NAME = 'wikipedia' DATABASE_USER = 'root' DATABASE_PASS = '' QUERY = [ ''' RESET /* Q0 */ QUERY CACHE ''', ''' SELECT /* Q1 */ COUNT(*) FROM page p JOIN revision r ON p.page_id = r.rev_page WHERE p.page_is_redirect = 0 AND p.page_namespace = 0 AND r.rev_user = 0 ''', ''' SELECT /* Q2 */ COUNT(*) FROM page p JOIN revision r ON p.page_id = r.rev_page WHERE p.page_is_redirect = 0 AND p.page_namespace = 0 AND r.rev_user = 0 AND p.page_touched > DATE_FORMAT(NOW() - INTERVAL 1 YEAR, '%Y0101000000') ''', ''' SELECT /* Q3 */ p.page_id FROM page p JOIN revision r ON p.page_id = r.rev_page WHERE p.page_is_redirect = 0 AND p.page_namespace = 0 AND r.rev_user = 0 ORDER BY p.page_touched DESC LIMIT 10 ''', ''' SELECT /* Q4 */ r.rev_user, COUNT(*) AS c FROM page p JOIN revision r ON p.page_id = r.rev_page WHERE p.page_is_redirect = 0 AND p.page_namespace = 0 GROUP BY r.rev_user ORDER BY c DESC ''', ''' SELECT /* Q5 */ SUBSTRING(r.rev_timestamp, 1, 6), COUNT(*) AS c FROM page p JOIN revision r ON p.page_id = r.rev_page WHERE p.page_is_redirect = 0 AND p.page_namespace = 0 GROUP BY SUBSTRING(r.rev_timestamp, 1, 6) ORDER BY c DESC ''', ] class CheckerThread(object): def __init__(self, host): self._host = host self._con = MySQLdb.connect(host=self._host, db=DATABASE_NAME, user=DATABASE_USER, passwd=DATABASE_PASS) self._cur = self._con.cursor() def run(self): elapsed = 0 total = 0 query = 0 for q in QUERY: start = time.time() self._cur.execute(q) elapsed = time.time() - start print "Q%d:%.5f\t" % (query, elapsed) total += elapsed query += 1 return total def main(): import os import sys if len(sys.argv) != 2: print "Usage: " + os.path.basename(__file__) + " hostname" return host = sys.argv[1] checker = CheckerThread(host) try: s = checker.run() print "Total:%.5f" % s except Exception, e: print e import traceback print traceback.format_exc() except KeyboardInterrupt: print 'KeyboardInterrupt' if __name__ == '__main__': main()