Попробуйте начать дб ориентируют без Tomcat, и убедиться в этом:
SET INDEX
Используя индекс полей, используемых для фильтрации данных в запросе, это приведет к улучшению. В OrientDB существуют различные типы индексов, каждый из которых обеспечивает преимущества в определенных ситуациях index. Поэтому выбор индекса зависит от вашей ситуации. В моих тестах я использовал «SB-TREE».
ПРОВЕРКИ RAM OCCUPATED BY ORIENTDB ПРОЦЕСС
С настройками по умолчанию (OrientDB автонастройки DISKCACHE = 5.064MB (куча = 455MB), загрузив 100000 вершин класса Person с 3-мя свойствами (идентификатор , название, город), у меня есть следующие значения памяти:
- Размер дБ = 80 MB
- Запрос =
SELECT COUNT(@rid) FROM Person WHERE id >= 0
- Время выполнения запроса = (холодно) 3.57 сек. (горячий) 1,88 с.
- Проверьте запрос, который использовался index =
explain SELECT COUNT(@rid) FROM Person WHERE id >= 0
, и проверьте, что под столбцом «involvedIndexes» есть индекс, который вы создали (в моем случае [«Person.ID "])
- процесс OrientDB (со студией открытой) = 442 МБ (команда: п.с. -ef | Grep сориентировать вы получаете idprocess, то: верхняя -pYOUR_ID)
Время запроса:
использование индекс:
RAM используется процесс orientdb в
УВЕЛИЧЕНИЕ КУЧА/DISKCACHE
, если у вас есть "из памяти", вы можете попытаться увеличить кучу:
- открыть файл Server.sh (для Linux) или сервера. bat (для окон) в папке/bin на вашем местоположении orientdb.
- Set MAXHEAP = -Xmx2048m
, если ваш запрос по-прежнему медленно после использования индексов увеличивает кэш:
- MAXDISKCACHE = "- Dstorage.diskCache.bufferSize = 8192 ДЛЯ 8GB"
Очевидно, что значения кучи и кеш зависят от того, сколько оперативной памяти у вас в вашей системе. Он принимает во внимание, что увеличение его слишком много с помощью Ram уже насыщено ОС, и больше, только становится недостатком.
Без запуска Tomcat у вас все еще «не хватает памяти», или count() вернет значения (достаточно быстро)?
Если до сих пор все прошло хорошо, вы можете запустить Tomcat и посмотреть, как он ведет оперативную память с активными 2 процессами (oriendb и tomcat). Если он не является насыщенным, попробуйте повторно запустить запрос с помощью count(). Получите «из памяти»? С активным tomcat вы должны попытаться переустановить память, чтобы этого было достаточно для Tomcat и для OrientDB. (Кроме того, учитывая RAM, используемый ОС).
EDIT
Правильный путь будет, если вы уже знаете, какие свойства должны присутствовать в вашем классе, сразу же создает свойство и каждое свойство создает свой относительный показатель. Таким образом, когда вы добавляете вершины, индексы обновляются автоматически после ввода. Поэтому, когда вы запускаете запрос, вы уверены, что фильтры в предложении where будут использовать индексы.
Извините, я не понял некоторые моменты: 1) у вас есть 35 000 столбцов, вы имеете в виду, что у вас есть класс с 35 000 полей? 2) Вы используете Tomcat и OrientDB одновременно? 3) какую версию OrientDB вы используете? – lsavio
1) Да 35 000 столбцов, не отображаемых в классе POJO, отображаются только некоторые поля. 2) Tomcat для приложения для развертывания переднего конца, а OrientDB - сервер БД. 3) Как я отметил мой вопрос 2.1 (более конкретно, 2.1.4) –