scripts: Add scripts to defragment MySQL tables
scripts/defragtables.py: - If run without argument, all tables EXCEPT stats are defragmented (quick run) - If run with argument e.g. "1", all table INCLUDING stats are defragmented (will take about one hour) scripts/defragtable.py <space-separated list of tables>: - Defragments the specified tables; will crash if table does not exist Signed-off-by: Adrian Schmutzler <freifunk@adrianschmutzler.de>
This commit is contained in:
parent
fc9a494078
commit
7955e60f2f
|
@ -48,3 +48,32 @@ def neighbor_color(quality,rt_protocol):
|
||||||
elif quality < 230:
|
elif quality < 230:
|
||||||
color = "#79ff7c"
|
color = "#79ff7c"
|
||||||
return color
|
return color
|
||||||
|
|
||||||
|
def defrag_table(mysql,table,sleep):
|
||||||
|
minustime=0
|
||||||
|
allrows=0
|
||||||
|
start_time = time.time()
|
||||||
|
|
||||||
|
qry = "ALTER TABLE `%s` ENGINE = InnoDB" % (table)
|
||||||
|
mysql.execute(qry)
|
||||||
|
mysql.commit()
|
||||||
|
|
||||||
|
end_time = time.time()
|
||||||
|
if sleep > 0:
|
||||||
|
time.sleep(sleep)
|
||||||
|
|
||||||
|
writelog(CONFIG["debug_dir"] + "/deletetime.txt", "Defragmented table %s: %.3f seconds" % (table,end_time - start_time))
|
||||||
|
print("--- Defragmented table %s: %.3f seconds ---" % (table,end_time - start_time))
|
||||||
|
|
||||||
|
def defrag_all(mysql,doall=False):
|
||||||
|
alltables = ('gw','gw_admin','gw_netif','hoods','netifs','router','router_events','router_gw','router_ipv6','router_neighbor','router_netif','users')
|
||||||
|
stattables = ('router_stats','router_stats_gw','router_stats_neighbor','router_stats_netif','stats_global','stats_gw','stats_hood')
|
||||||
|
|
||||||
|
for t in alltables:
|
||||||
|
defrag_table(mysql,t,1)
|
||||||
|
|
||||||
|
if doall:
|
||||||
|
for t in stattables:
|
||||||
|
defrag_table(mysql,t,60)
|
||||||
|
|
||||||
|
writelog(CONFIG["debug_dir"] + "/deletetime.txt", "-------")
|
||||||
|
|
|
@ -0,0 +1,24 @@
|
||||||
|
#!/usr/bin/python3
|
||||||
|
|
||||||
|
# Execute manually
|
||||||
|
|
||||||
|
import os
|
||||||
|
import sys
|
||||||
|
sys.path.insert(0, os.path.abspath(os.path.dirname(__file__) + '/' + '..'))
|
||||||
|
|
||||||
|
from ffmap.misc import defrag_table, writelog
|
||||||
|
from ffmap.config import CONFIG
|
||||||
|
from ffmap.mysqltools import FreifunkMySQL
|
||||||
|
|
||||||
|
import time
|
||||||
|
start_time = time.time()
|
||||||
|
|
||||||
|
mysql = FreifunkMySQL()
|
||||||
|
i = 1
|
||||||
|
while i < len(sys.argv):
|
||||||
|
defrag_table(mysql,sys.argv[i],1)
|
||||||
|
i = i + 1
|
||||||
|
mysql.close()
|
||||||
|
|
||||||
|
writelog(CONFIG["debug_dir"] + "/deletetime.txt", "-------")
|
||||||
|
print("--- Total defrag duration: %.3f seconds ---" % (time.time() - start_time))
|
|
@ -0,0 +1,22 @@
|
||||||
|
#!/usr/bin/python3
|
||||||
|
|
||||||
|
# Execute manually
|
||||||
|
|
||||||
|
import os
|
||||||
|
import sys
|
||||||
|
sys.path.insert(0, os.path.abspath(os.path.dirname(__file__) + '/' + '..'))
|
||||||
|
|
||||||
|
from ffmap.misc import defrag_all
|
||||||
|
from ffmap.mysqltools import FreifunkMySQL
|
||||||
|
|
||||||
|
import time
|
||||||
|
start_time = time.time()
|
||||||
|
|
||||||
|
mysql = FreifunkMySQL()
|
||||||
|
if(len(sys.argv)>1):
|
||||||
|
defrag_all(mysql,sys.argv[1])
|
||||||
|
else:
|
||||||
|
defrag_all(mysql,False)
|
||||||
|
mysql.close()
|
||||||
|
|
||||||
|
print("--- Total defrag duration: %.3f seconds ---" % (time.time() - start_time))
|
Loading…
Reference in New Issue