Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / странно работает jdbc / 25 сообщений из 37, страница 1 из 2
26.10.2015, 10:18
    #39086460
вадя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
странно работает jdbc
есть такое
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
        String getBase = "jdbc:mysql://localhost:3306/test?characterEncoding=UTF8&useUnicode=true";
        String getBase_login = "root";
        String getBase_password = "1234";
        StringBuilder sbb = new StringBuilder();
        try (Connection con = DriverManager.getConnection(getBase, getBase_login, getBase_password);
                CallableStatement proc = con.prepareCall("{call page1_xxx07('" + sy.toString() + "')}");) {
            rs = proc.executeQuery();
           ................................
        } catch (SQLException ex) {
            Logger.getLogger(SSLServer.class.getName()).log(Level.SEVERE, null, ex);
        }


грешил на mysql, но судя по 18325072
mysql не виноват.
может быть влияет время выполнения самого запроса? он длится 36 сек.
...
Рейтинг: 0 / 0
26.10.2015, 14:13
    #39086856
вадя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
странно работает jdbc
может кто подскажет какие параметры отвечают за долгое выполнение запроса, более 30 секунд?
есть подозрение, что драйвер отправляет повторные запросы через какое-то время. если от базы не пришло ответа вовремя...
...
Рейтинг: 0 / 0
26.10.2015, 14:31
    #39086889
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
странно работает jdbc
вадяможет кто подскажет какие параметры отвечают за долгое выполнение запроса, более 30 секунд?
А аналогичный запрос из любой тулзы? А включить логирование в mysql и посмотреть?

вадяесть подозрение, что драйвер отправляет повторные запросы через какое-то время. если от базы не пришло ответа вовремя...
Это вряд ли.
...
Рейтинг: 0 / 0
26.10.2015, 14:32
    #39086890
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
странно работает jdbc
DriverManager.getConnection тоже может отнимать существенное время. Оно включено в тест?
...
Рейтинг: 0 / 0
26.10.2015, 15:56
    #39087062
вадя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
странно работает jdbc
вот
Код: java
1.
2.
3.
4.
5.
6.
7.
 try (Connection con = DriverManager.getConnection(getBase, getBase_login, getBase_password);
                CallableStatement proc = con.prepareCall("{call page1_xxx07('" + sy.toString() + "')}");) {
            rs = proc.executeQuery();
            ..............
        } catch (SQLException ex) {
            Logger.getLogger(SSLServer.class.getName()).log(Level.SEVERE, null, ex);
        }


при 28000 выполняется без проблем
из другой тулзы тоже нормально, нагрузка на проц опускается до 0 после отправки данных
...
Рейтинг: 0 / 0
26.10.2015, 16:07
    #39087087
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
странно работает jdbc
вадя
Код: java
1.
rs = proc.executeQuery();


тип курсора при возварте?
...
Рейтинг: 0 / 0
26.10.2015, 16:31
    #39087124
вадя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
странно работает jdbc
Petro123,

ResultSet rs;
...
Рейтинг: 0 / 0
26.10.2015, 16:54
    #39087169
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
странно работает jdbc
вадяPetro123,
ResultSet rs;
я в курсе что такое слово там есть.
Я спросил про Type of ResultSet.
Покопай в этом направлении. Типы могут быть разными и результат\время тоже.
IMHO
...
Рейтинг: 0 / 0
26.10.2015, 17:29
    #39087240
вадя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
странно работает jdbc
в данном случае меня устраивает по умолчанию что там.
даже не смотрел.
в принципе устроит и ResultSet.TYPE_SCROLL_INSENSITIVE и ResultSet.TYPE_FORWARD_ONLY
если они будут играть какую-то роль.
...
Рейтинг: 0 / 0
26.10.2015, 17:33
    #39087249
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
странно работает jdbc
вадяв данном случае меня устраивает по умолчанию что там.
вот и я не понял твоего сабжа. Что 36 сек, что 56 сек., какая разница. Всё рано много)).
А настроек при LIKE столько, что теряется сам смысл вопроса. IMHO
...
Рейтинг: 0 / 0
26.10.2015, 17:44
    #39087258
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
странно работает jdbc
вадя,

Я правильно понял вашу проблему. Есть запрос (хранимка) который вычитывает много-много данных. В БД он отрабатывает шустро и это видно по плану запроса? Но когда запрос выполняется из JDBC сервер сильно тормозит, вычитывая все необходимые данные вместо того чтобы отдать скроллируемый курсор?
...
Рейтинг: 0 / 0
26.10.2015, 18:09
    #39087278
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
странно работает jdbc
вадя,

А можно весь код посмотреть?
...
Рейтинг: 0 / 0
26.10.2015, 18:13
    #39087283
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
странно работает jdbc
Blazkowiczчтобы отдать скроллируемый курсор?
я думаю, это и есть тип курсора который наду установить.
Тогда при проходе в коде в цикле, драйвер будет подкачивать следующие записи. Или не будет.
...
Рейтинг: 0 / 0
26.10.2015, 18:17
    #39087289
вадя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
странно работает jdbc
Petro123вадяв данном случае меня устраивает по умолчанию что там.
вот и я не понял твоего сабжа. Что 36 сек, что 56 сек., какая разница. Всё рано много)).
А настроек при LIKE столько, что теряется сам смысл вопроса. IMHO
ну из-за чего такая разница, и почему она есть это вопрос отдельный.
а то что время большое - в этом нет ничего удивительного всё в принципе работы like %что-то%, а именно из-за первого процента
настроек при like нет , по крайней мере в том виде , что используется.
...
Рейтинг: 0 / 0
26.10.2015, 18:23
    #39087297
вадя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
странно работает jdbc
Blazkowiczвадя,

А можно весь код посмотреть?

вызов
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
    public void listbox(String param, String name) {
        String[] st = param.split(" ");
        StringBuilder sy = new StringBuilder();
        for (String sf : st) {
            sy.append(" name like ''%").append(sf).append("%'' and");
        }
        sy.setLength(sy.length() - 4);
        String getBase = "jdbc:mysql://localhost:3306/test?characterEncoding=UTF8&useUnicode=true";
        String getBase_login = "root";
        String getBase_password = "1234";
        StringBuilder sbb = new StringBuilder();
        try (Connection con = DriverManager.getConnection(getBase, getBase_login, getBase_password);
                CallableStatement proc = con.prepareCall("{call page1_xxx07('" + sy.toString() + "')}");) {
            rs = proc.executeQuery();
            sbb.append(name);
            if (rs != null) {
                sbb.append(list_names(rs).toString());
            }
            webSocket_.send(sbb.toString());
        } catch (SQLException ex) {
            Logger.getLogger(SSLServer.class.getName()).log(Level.SEVERE, null, ex);
        }
    }


хранимка
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
CREATE DEFINER = 'root'@'localhost'
PROCEDURE test.page1_xxx07(IN `name` varchar(255))
BEGIN
  SET @name = `name`;
  IF (LENGTH(`name`) > 0)
  THEN
    IF `name` = '±'
    THEN
      SELECT
        pass.id,
        pass.name
      FROM pass LIMIT 15;

    ELSE

      SET @sql = 'SELECT SQL_SMALL_RESULT  pass.id, pass.name FROM pass WHERE ';

      SET @sql = CONCAT(@sql, `name`, ' limit 5');
            

      PREPARE SSql FROM @sql;
     
      EXECUTE SSql;
     
      DEALLOCATE PREPARE SSql;
    END IF;

  END IF;
END

...
Рейтинг: 0 / 0
26.10.2015, 18:28
    #39087304
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
странно работает jdbc
вадя,

То есть данных едет мало? Тормозит исключительно выборка? Так надо лог mysql смотреть.
...
Рейтинг: 0 / 0
26.10.2015, 18:32
    #39087308
вадя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
странно работает jdbc
Blazkowiczвадя,

Я правильно понял вашу проблему. Есть запрос (хранимка) который вычитывает много-много данных. В БД он отрабатывает шустро и это видно по плану запроса? Но когда запрос выполняется из JDBC сервер сильно тормозит, вычитывая все необходимые данные вместо того чтобы отдать скроллируемый курсор?
запрос высчитывает ограниченное число данных - Limit 5, только 5 строк удовлетворяющих условию like %что-то%
отрабатывает он не очень шустро, но это и понятно - такое like %что-то% сканирует всю таблицу, до тех пор пока не наберёт 5 строк.
сервер их набирает и отдаёт, пока он их отбирает проц грузит на 100%, это понятно, т.к. все данные в памяти.
проблема в том, что когда данные отданы проц ещё кучу времени нагружен на 100%.
если это же выполнить из dbForge проц , после отдачи, идет курить бамбук.
вот и возникает вопрос - почему?
...
Рейтинг: 0 / 0
26.10.2015, 18:37
    #39087310
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
странно работает jdbc
вадяпроблема в том, что когда данные отданы проц ещё кучу времени нагружен на 100%.
если это же выполнить из dbForge проц , после отдачи, идет курить бамбук.
закрой коннект и курсор драйвера.
после
Код: java
1.
sbb.append(list_names(rs).toString());
...
Рейтинг: 0 / 0
26.10.2015, 18:38
    #39087311
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
странно работает jdbc
из амерь время на этой строке. До и после.
...
Рейтинг: 0 / 0
26.10.2015, 18:39
    #39087315
вадя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
странно работает jdbc
Blazkowiczвадя,

То есть данных едет мало? Тормозит исключительно выборка? Так надо лог mysql смотреть.
время отдачи одинаково.
я смотрю менеджер сессий и там (при jdbc) идет выполнение этого запроса, как-будто jdbc шлёт и шлет запросы, не получив вовремя ответ
...
Рейтинг: 0 / 0
26.10.2015, 18:45
    #39087319
вадя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
странно работает jdbc
Petro123вадяпроблема в том, что когда данные отданы проц ещё кучу времени нагружен на 100%.
если это же выполнить из dbForge проц , после отдачи, идет курить бамбук.
закрой коннект и курсор драйвера.
после
Код: java
1.
sbb.append(list_names(rs).toString());


счас сделаю.
а разве java 8 не закрывает сама всё?
...
Рейтинг: 0 / 0
26.10.2015, 18:46
    #39087320
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
странно работает jdbc
вадякак-будто jdbc шлёт и шлет запросы, не получив вовремя ответ
sbb.append(list_names(rs).toString());
это всё таки твой код, а не драйвера
...
Рейтинг: 0 / 0
26.10.2015, 18:47
    #39087323
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
странно работает jdbc
Petro123вадякак-будто jdbc шлёт и шлет запросы, не получив вовремя ответ
sbb.append(list_names(rs).toString());
это всё таки твой код, а не драйвера
Там 15 несчастных строк. Тормозит исключительно выборка по огромной таблице.
...
Рейтинг: 0 / 0
26.10.2015, 18:49
    #39087326
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
странно работает jdbc
вадяа разве java 8 не закрывает сама всё?
вам шашечки или ехать?
Т.е. мы Java8 проверяем иил драйвер? ))
...
Рейтинг: 0 / 0
26.10.2015, 18:50
    #39087328
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
странно работает jdbc
BlazkowiczТам 15 несчастных строк. Тормозит исключительно выборка по огромной таблице.
может быть. Я просто люблю чистое, убранное место перед работой и тестами. Такие тараканы).
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / странно работает jdbc / 25 сообщений из 37, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]