   protected Stats executeMySQLImpl() {
      String readQuery = "SELECT name FROM ReadWriteTest WHERE id = 1";
      String writeUpdate = "UPDATE users SET name = '%s' WHERE id = 1";
      List<Long> readAfterWriteTimes = new ArrayList<Long>(TIMES);
      List<Long> writeAfterReadTimes = new ArrayList<Long>(TIMES);
      Statement statement = null;
      ResultSet results = null;
      try {
         statement = conn.createStatement();
         long time = System.currentTimeMillis();
         for (int i = 0; i < TIMES; i++) {
            results = statement.executeQuery(readQuery);
            if (i != 0) {
               readAfterWriteTimes.add(System.currentTimeMillis() - time);
            }
            time = System.currentTimeMillis();
            statement.executeUpdate(String.format(writeUpdate, randomStrings[i]));
            writeAfterReadTimes.add(System.currentTimeMillis() - time);
            time = System.currentTimeMillis();
         }
      } catch (Exception ex) {
         System.err.println("Error getting read/write times.");
         ex.printStackTrace(System.err);
      } finally {
         try {
            if (results != null) {
               results.close();
               results = null;
            }
            if (statement != null) {
               statement.close();
               statement = null;
            }
         } catch (SQLException sqlEx) {
            System.err.println("Error Closing results.");
         }
      }
      return new ReadWriteStats(readAfterWriteTimes, writeAfterReadTimes);
   }

   protected Stats executeMySQLImpl() {
      String readQuery = "SELECT name FROM ReadWriteTest WHERE id = 1";
      String writeUpdate = "UPDATE ReadWriteTest SET name = '%s' WHERE id = 1";
      List<Long> readAfterWriteTimes = new ArrayList<Long>(TIMES);
      List<Long> writeAfterReadTimes = new ArrayList<Long>(TIMES);
      Statement statement = null;
      ResultSet results = null;
      try {
         statement = conn.createStatement();
         long time = System.currentTimeMillis();
         for (int i = 0; i < TIMES; i++) {
            results = statement.executeQuery(readQuery);
            if (i != 0) {
               readAfterWriteTimes.add(System.currentTimeMillis() - time);
            }
            time = System.currentTimeMillis();
            statement.executeUpdate(String.format(writeUpdate, randomStrings[i]));
            writeAfterReadTimes.add(System.currentTimeMillis() - time);
            time = System.currentTimeMillis();
         }
      } catch (Exception ex) {
         System.err.println("Error getting read/write times.");
         ex.printStackTrace(System.err);
      } finally {
         try {
            if (results != null) {
               results.close();
               results = null;
            }
            if (statement != null) {
               statement.close();
               statement = null;
            }
         } catch (SQLException sqlEx) {
            System.err.println("Error Closing results.");
         }
      }
      return new ReadWriteStats(readAfterWriteTimes, writeAfterReadTimes);
   }
