Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como faço para registrar o tempo de execução das instruções sql em execução que são armazenadas em arquivos?


Para encontrar o tempo de execução , você deve inicializar um objeto de data no início do programa e, em seguida, compará-lo com outro objeto de data no final do programa. Isso lhe dará um valor inteiro de quanto tempo levou para executar. Em seguida, use este int sempre que precisar (por exemplo, imprima-o no console, em um arquivo etc.)
Date startDate = new Date();
//Run the rest of the program
Date endDate = new Date();
int msElapsedTime = startDate.getTime() - endDate.getTime();

Se você não precisa fazer nada no programa Java relacionado aos resultados de sua consulta, você pode manter isso bem simples usando runtime.exec() para que o mysql execute as consultas. A única grande desvantagem aqui é que você não pode imprimir o número resultante de linhas afetadas:
Date startDate = new Date();
runtime.exec("mysql db_name < /home/liova/download/tpch/queries/Q1.sql");
Date endDate = new Date();
int msElapsedTime = startDate.getTime() - endDate.getTime();

Se você realmente precisa fazer algo com os resultados, então runtime.exec() não será suficiente para você. Leia...

Para ler a fonte SQL , apenas leia-o como um arquivo de texto. Será mais fácil se você tiver cada linha do SQL como uma consulta SQL separada, caso contrário você terá que fazer algumas análises e ajustes. Aqui está um exemplo de ler um arquivo uma linha de cada vez.

Para executar o SQL , use JDBC. Aqui está um tutorial nele. Os itens de 1 a 5 detalharão tudo o que você precisa para executar o sql e usar os resultados (desde estabelecer sua conexão sql até executar a consulta e processar o objeto resultSet que retorna). Se alguma dessas etapas causar problemas, sua melhor aposta é fazer uma pergunta separada, adaptada ao problema específico que você está tendo no processo.