Поиск по большой базе



  • Здраствуйте подскажите пожалуйста кто знает, каким образом можно облегчить поиск строчки в базе чтобы сам БАС не зависал база примерно 100.000-1млн строк. Пробовал через кубик "Количество записей" там ставить в фильтр равно и выбирал свой параметр который нужно найти, но проблема в том что если сервер и тянет это всё цп на 40% загружено оперативка на 30% то сам бас просто сначала очень медленно работает видно как полоска зависает а потом и вовсе крашет. Пробовал также через кубик "Получить запись по критерию" и там циклом прогонять по каждой 1000 строк, но тогда если делать сон то он будет очень долго искать и надо чуть ли не дополнительно 500 потоков создавать в асинхронной функции чтобы он хоть как то успевал за основным скриптом. Последним решением которое от части помогло было создать доп. несколько потоков которые бы брали из ресурса строчку обрабатывали по базе её действием "Количество записей" и отдавали назад основному скрипту, но тут тоже больше 20 поток нельзя было выделить иначе бас начинал зависать. Я скомпилировал бас и запустил отдельно 3 версии скрипта в которых по 10 этих чекеров базы, так работает но тоже очень медленно и это просто какие-то ужасные костыли. Поэтому всё таки решил спросить если у кого то есть скрипт где очень большой "Чёрный список" в базе то каким образом они получая строчку сверяют её с ним чтобы всё не зависало в многопотоке. В коде я ничего не шарю может есть какой способ через node js или еще что нибудь. База локальная у меня. От сервера это тоже я так понял не зависит потому что пробовал на своё компе где 8 ядер и 64 гига оперативки и всё равно ресурсы компа свободны а сам бас зависает намертво.



  • @defol добавить индексы.(индексы - средство ускорения поиска)
    встроенные средства в бас это не позволяют, лучше использовать сторонние.
    подобная тема уже поднималась.

    подробностей как это делать во встроенной в бас базе не знаю.
    ищи тему или тех кто хорошо знаком с mongodb


Log in to reply