Все технические форумы на одном сайте Удобный поиск информации с популярных форумов в одном месте
Вопрос: Как определить суммарное количество выполнений какого-то sql_id? - v$sql executions

Подскажите, пожалуйста как интерпретировать количество выполнений оператора в поле Executions.
Я понимаю, что счетчик включается после попадания оператора в библиотечный кэш.
И, отключается, после его вытеснения оттуда.
Если оператор попадает туда снова, включается новый счетчик?

А с какого момента, вообще, идет отсчет? С момента перезапуска?
Ответ: Всем спасибо!
Вопрос: При использовании рекурсии вылазит "Too many concurrent executions of the same request"

Всем привет
Юзаю ОгнеПтица 2.1, в своей процедуре использу запрос с рекурсией (построение дерева для выбранных узлов), вот такой
with recursive tree
  as (select t.MainOperID, t.MainOperName, t.MainWareCode, t.MainWareName, t.ChildOperID, t.childopername, t.ChildWareCode,
   t.ChildWareName, 1 lvl
      from tblProdOperTree t
      where t.MainOperID=:AOperID
      union all
      select t.MainOperID, t.MainOperName, t.MainWareCode, t.MainWareName, t.ChildOperID, t.childopername, t.ChildWareCode,
       t.ChildWareName, prior.lvl + 1 lvl
      from tblProdOperTree t
      inner join tree prior on prior.ChildOperID = t.MainOperID)
    select * from tree)

При многократном обращении к этому запросу - вылазит вот такая хрень:
"Too many concurrent executions of the same request"
Как это можно побороть? :(
Ответ: hvlad, т.е., если в триггере при "отматывании назад" к корню я использую SELECT ... FOR UPDATE WITH LOCK, это не решит задачу?
Вопрос: справочник оборудования - 300 тыс единиц с их фотографиями

Реально ли такое на SQLite под андроид? Будет шевелиться или нет? Или это детские размеры, не о чем заморачиваться?
Фоток будет меньше, чем 300 тыс - скажем, 150 тыс. - т.к. куча дублей
Справочник с минимальным количеством информации - инвн номер, наименование до 100 байт и фотка. Фотка минимально возможного размера для идентификации на экране.

Цель - поиск по инвн или по наименованию, показать эти оба поля и фотку.

С SQLite вообще никогда не работал, интересует вообще возможность.
Ответ: ну, базы навигатора по 500 мб
вроде шевелится
Вопрос: Access VBA код на 65 тыс. строк формулы вешают Excel

Добрый день!

Подскажите, пожалуйста, может ли кто-то помочь с кодом на VBA для Access? Ситуация следующая.
  • Есть база данных, она выгружается в Access 2010.
  • На основе этой базы делаются определенные вычисления, которые в итоговом варианте выдаются в виде сводной таблицы.
  • Исходные данные (база) и свод (результат) - в приложении Excel.
  • Выборка базы - урезанная, в полной выгрузке 65 тыс. строк.
  • В серых полях - дополнительные вычисления посредством формул.

Проблема в том, что на 65 тыс. строк формулы вешают Excel.
Вопрос - можно ли написать сразу в Access код VBA, чтобы все нужные формулы считались кодом?

Заранее спасибо!
Ответ:
Сообщение от commun
Ну и пусть вешают, чем это плохо?
Скорости хочется?
Вопрос: Обработка только 10 тысяч строк

Добрый день уважаемые форумчане!
Вопрос вот в чем, есть у меня БД в MS Access 2010 - 590 000 записей (во вложении). При попытке соединить содержимое полей НаселенныйПункт, Улица, Дом, Корпус и Квартира воедино в поле Адрес обрабатывается только 10 тыс. записей +-.
Код такой:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
Private Sub Кнопка138_Click()
With CurrentDb.OpenRecordset("select * from esds ")
        Do Until .EOF
            .Edit
            ![адрес] = ![НаселенныйПункт] & ", " & ![Улица] & ", " & ![Дом] & ", " & ![Корпус] & ", " & ![Квартира]
            .Update
            .MoveNext
        Loop
 
    End With
End Sub
Вдогонку, вопрос, при попытке заменить содержимое в полях (к примеру лишние запятые) в самой таблице (через Замена, Заменить все) обрабатывается тоже около 10 тыс записей и потому приходится повторять процедуру много раз.

Вопрос в том, с чем именно это может быть связано?
Ответ:
Сообщение от shanemac51
вы забыли скобки
Я их специально убрал, ибо они не нужны, т.к. сложение в данном случае имеет более высокий приоритет, чем конкатенация. Но со скобками да, будет понятнее. Проверил на базе - все ок
Вопрос: Аналоги Kdb+ умеющие оперировать тысячами запросов в секунду

Доброго дня DBA и всем людям работающим с БД.

Вчера я первый раз услышал о существовании БД под названием Kdb+, о которой очень мало информации в интернете, но очень много хвалебных речей на сайте http://kx.com/ компании-разработчика.

Как я понял Kdb+ относится к типу In-memory database и главное ее преимущество в том, что она может обрабатывать большие объемы данных.

Судя по информации на сайте Kdb+ в основном используется финансовыми структурами, оно и ясно, потому что брокеры оперируют огромными объемами данных в режиме онлайн.

Я хотел спросить у вас, какие есть на рынке базы данных, которые способные оперировать тысячами и десятками тысячь запросов в секунду?
Ответ:
vromanov
Inside22,

TimesTen. Вот внизу отчетик по 20 самым популярным запросам на сервере. Как видно средний CPS 33698. При этом машинка загружена на 40%. Она еще и реплицирет изменения на второй узел в кластере. Т.е. она может и больше, просто у меня нагрузка ограничена.

Машинка - десктоп
model name : Intel(R) Core(TM) i7 CPU K 875 @ 2.93GHz
stepping : 5
cpu MHz : 1200.000
cache size : 8192 KB


| Total | Total | Total | Total | Total | Total | Total | Total | Periodic | Periodic | Periodic | Periodic | Per. |
Statement name | Count | CPS | AvgExec | AvgFetch | Full | % | MaxExec |MaxFetch | CPS | AvgExec | AvgFetch | Full | % |
----------------------------------------|-----------|------------|-------------|-------------|------------|-------|---------|---------|------------|-------------|-------------|------------|-------||


Времена даны в микросекундах?
Вопрос: Загрузка данных более 500 тыс. строк за один раз

Помогите оптимизировать загрузку большего количества данных.
Есть файлы более 500 тыс. строк, их нужно загрузить в таблицу, если использовать обычный import, нужно резать файл, очень долго и нудно, как можно все одним махом загрузить?
Заранее спасибо.
Ответ:
AkOs
если использовать обычный import, нужно резать файл
Наивное невежество.

+
RTFM
Вопрос: Как сделать быстрый поиск по ~300 тыс. записям

Всем привет.

Есть таблица в БД, где примерно 300 тыс. записей ФИО, но имя и отчество, разделенные пробелом находятся в одном поле (отчества может не быть):

last_name | name
--------------------
... | ...
Пушкин | Александр Сергеевич
Эйнштейн | Альберт
... | ...
----------------------

Ищутся записи по запросу пользователя, причем вариации написания пользователем могут быть разными:
----------------------------
Имя Фамилия Отчество
или
Фамилия Имя Отчество
или
Фамилия
или
Фамилия Имя
...
----------------------------
и тд.


Чтобы реализовать более менее релевантный поиск, я сначала проверяю количество слов в запросе пользователя, если больше одного, то разбиваю их с помощью PHP на несколько слов и делаю такие запросы:

PHP
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
$query_get = trim(strip_tags($_GET['query']));
$query_arr = explode(" ", $query_get);
 
$query_1 = $q_arr[0].'%';
$query_2 = $q_arr[1].'%';
 
$STH = DB::Connect()->prepare("
 
   SELECT `id`, `last_name`, `name` FROM `tb_people` WHERE "
   . "`last_name` LIKE :query_1 AND `name` LIKE :query_2 
   ."LIMIT 0,$LIMIT"
 
);
                    
$STH->bindParam(':query_1', $query_1);
$STH->bindParam(':query_2', $query_2);
$STH->execute();
 
while($row = $STH->fetch()){
    $arResult[] =$row;
}
 
if(!$arResult){
  
     //новый запрос только с другой комбинацией слов из запроса пользователя
 
}

В итоге все это очень медленно работает, т.к. поиск по всем записями осуществляется несколько раз, если не находится результат.

Если использовать в одном запросе кучу OR и % вокруг слов запроса, то в результат попадает слишком много лишнего и неотсортированного по релевантности.

Почитал про FULLTEXT INDEX в MySQL вроде он не подходит для поиска ФИО и в данном случае гораздо быстрее будет работать LIKE.



Может кто посоветует как сделать более менее релевантный поиск по такой таблице, который будет не зависеть от порядка слов вводимых пользователем?
Ответ:
Сообщение от JoQeR
Можно ли объеденить несколько таких запросов в один, по принципу, если по первой части запроса результата не оказалось, то выполняется другая?
Если да, то как это примерно выглядит на MYSQL, и даст ли это более быструю работу, чем если результаты запросов проверялись бы на PHP после полного выполнения каждого запроса (как писал в первом посте темы)?
Как вообще реализуют/оптимизируют обычно запросы поиска по огромной базе с ФИО?
Если есть ответы хотя бы на некоторые вопросы поделитесь пожалуйста
опишу тезисно:
если есть возможность сделать внутри БД, лучше делать внутри БД
ФИО в БД должно лежать отдельно: name1,name2,name3
обычно имеет смысл поиск только по фамилии
методы ускорения есть разные, можете начать с первой буквы фамилии = отдельная таблица
Вопрос: Нужно загружать 20 тыс записей через процедуру. Как правильно сделать ?

Привет.
Мне необходимо загружать в таблицу довольно большой набор данных. Бывают конечно и маленькие наборы по 500. Но может привалить и 100 тысяч.

Дайте пожалуйста рекомендации по тому, как подготовить таблицу для работы с такими данными, как правильно написать процедуру.


Пока все работает примерно так:

Таблица Place (маленькая, с ней проблем особых нет)
Id
...


Таблица Values (проблемная)
Id PlaceId
......

id кластерный индекс.
На PlaceId тоже есть неуникальный индекс (чтобы удаление происходило быстрее)



В таблицу нужно загружать данные а также иногда удалять все Values, которые принадлежат к конкретному Place.


В процедуре это делается так:

declare @tempTab table (Id int)

-- получаем все Place которые нужно удалить
insert into @tableToDel
SELECT id FROM ...

ALTER TABLE Values NOCHECK CONSTRAINT ALL

DELETE val FROM Values val
where val.PlaceId in (select id from @tempTab)

ALTER TABLE Values 	WITH CHECK CHECK CONSTRAINT ALL

... удаляем из Place 


Удаление из Place ерунда, там по 20-50 записей если максимум. А вот удаление из Values меня волнует.


Что можно сделать ?
Может быть как-то запартиционировать таблицу что ли, не знаю только как правильно - по каким полям. Что еще ?
Ответ: ProBiotek,

дьявол всегда в деталях. Вы сначала выясните суть проблемок, а потом уже будете решение искать. Хотя бы блокировки помониторьте, как вам предложили, если в них дело, то наложение SchM проблемки только усугубит. А то повадились тут ядреными бомбами клопов морить...
Вопрос: Сотни тысяч файлов в base\pgsql_tmp

Одна из баз периодически (за последнюю неделю дважды) начинает жутко тормозить. Как выяснилось причина в огромном количестве (200 тыс и более ) нулевых файлов в base\pgsql_tmp. Остановка (с отстреливанием процессов), затем чистка директории и снова запуск спасают ситуацию. Судя по имена и датам создания файлов, такое кол-во файлов создает 1 или 2 процесса в течении получаса.

Postgresql 9.4.4 Windows Server 2012 Standart 32 Гб.

Как найти источник проблем? Что посоветуете? (смена ОС не рассматривается).

--
Пока писал, в голову пришло что можно взять PID из имени файла и по нему попытаться найти сессию виновника.
Ответ: К счастью или к сожаление ситуация не повторилось. На выходных перегрузили и work_mem тоже вступил в силу. Так что отписываться не о чем