import mysql.connector

DB_HOST = "10.2.12.226"
DB_USER = "gps"
DB_PASSWORD = "q1w2e3r4"
DB_NAME = "gps_reportes"

try:
    mydb = mysql.connector.connect(
        host=DB_HOST,
        user=DB_USER,
        password=DB_PASSWORD,
        database=DB_NAME
    )
    mycursor = mydb.cursor()

    mycursor.execute(
        "SELECT TABLE_NAME FROM information_schema.TABLES WHERE TABLE_SCHEMA = %s AND TABLE_NAME LIKE %s ORDER BY TABLE_NAME DESC",
        (DB_NAME, "LOG_%")
    )

    tables = mycursor.fetchall()
    chunk_size = 1000
    for i in range(0, len(tables), chunk_size):
        chunk = tables[i:i + chunk_size]
        print(f"\n--- Optimizing batch of tables ({i+1}-{min(i + chunk_size, len(tables))}) ---")
        for table_tuple in chunk:
            table_name = table_tuple[0]
            print(f"  Optimizing table: {table_name}")
            optimize_query = f"OPTIMIZE TABLE `{table_name}`"
            mycursor.execute(optimize_query)
            result = mycursor.fetchall()
            for row in result:
                print(f"    {row}")
            mydb.commit()

    print("\nOptimization process completed.")

except mysql.connector.Error as err:
    print(f"Error: {err}")

finally:
    if mydb.is_connected():
        mycursor.close()
        mydb.close()