Google Apps Script JDBC Проблемы с производительностью Google Cloud SQL - PullRequest
0 голосов
/ 10 сентября 2018

Привет, ребята, это мой первый пост здесь. Я использую Google Cloud SQL для хранения данных из моего скрипта Google Apps с использованием соединения JDBC, но это чертовски медленно. Я уже пробовал Google JDBC-туннель и обычное JDBC-соединение с IP-белым списком. При обоих методах один цикл соединения занимает около 900 мс, по сравнению с этим я даже получаю лучшую производительность записи / чтения в электронную таблицу. Таблица содержит только 20 столбцов и несколько тестовых записей (10 строк).

Кажется, используя GAS, вы не можете объединить ваше соединение в кеше, так как он только сохраняет строки, и если вы преобразуете в строку / анализируете для сохранения / чтения, это не сработает впоследствии, так что мне осталось открыть новое соединение для каждый экземпляр для чтения / записи.

Я использую SQL для хранения пользовательских состояний из моего Telegram-Bot, код прост, в состоянии чтения пользовательского состояния, обработки данных и записи пользовательского состояния, это только 2 JDBC-соединения на пользовательскую команду, но я получаю время реакции почти 2с. Любая помощь дорого оценена.

Код:

var dbUrl = "jdbc:google:mysql://myinstance/mytable";
var username = "myusername";
var password = "mypassword";

function jdbcGetUserState(chatid) {

var conn = Jdbc.getCloudSqlConnection(dbUrl,username,password);

  var stmt = conn.prepareStatement("SELECT * FROM user_active WHERE chatid=?");
  stmt.setInt(1,chatid);
  stmt.setMaxRows(2);
  var rs = stmt.executeQuery();
  var data = {};

  if (rs.next()) {
    data = 
      {
      activejobnumber: rs.getInt("activejobnumber"),
      isadmin: rs.getBoolean("isadmin"),
      ...,
      }
  } 
  stmt.close();
  conn.close();  
  return data;
}

РЕДАКТИРОВАТЬ: кажется, что установление нового соединения очень ресурсоемко и занимает почти 900 мс ... есть ли обходной путь к пулу соединений JDBC в скрипте приложений?

[18-09-10 09: 40: 12: 507 PDT] Jdbc.getCloudSqlConnection ([jdbc: google: mysql: / ...) [0,837 секунды]

...