Работа с MySQL

Joined
Mar 23, 2015
Messages
1,301
Reaction score
848
Points
113
Наконец-то решил освоить работу с базой данных, но на первом же кубике возникли проблемы. Во время выполнения запроса на добавление информации в базу данных происходит ошибка. При помощи научного метода тыка было выявлено следующее: если в переменной есть буквенные символы( без разницы кириллица или латиница) вместо этого значения в таблицу кладется значение 0. Если значение переменной состоит целиком из чисел, запись в таблицу происходит нормально.
Сервер локальный, Open Server
 

WebBot

Client
Joined
Apr 4, 2015
Messages
1,825
Reaction score
1,414
Points
113
покажите структуру таблицы с названиями и типом полей + сам запрос добавления данных в таблицу ... иначе это будет гадание кофейной гуще
 
  • Thank you
Reactions: KolkaPetkinSyn
Joined
Mar 23, 2015
Messages
1,301
Reaction score
848
Points
113
покажите структуру таблицы с названиями и типом полей + сам запрос добавления данных в таблицу ... иначе это будет гадание кофейной гуще
В текст запроса вставлял и переменные и просто значения. "Использовать параметры в запросе" тоже пробовал
 

Attachments

BigBlag

Client
Joined
Jan 31, 2019
Messages
7
Reaction score
3
Points
3
Есть такое понятие "Тип данных". Совершенно очевидно что ты получаешь тип данный Строка но пытаешься записать их в числовой параметр, но тут есть и нестыковка по идее у тебя должен писаться значение 1 вместо 0.
P.S. ZennoPoster только начал изучать.
 
  • Thank you
Reactions: KolkaPetkinSyn
Joined
Mar 23, 2015
Messages
1,301
Reaction score
848
Points
113
Есть такое понятие "Тип данных". Совершенно очевидно что ты получаешь тип данный Строка но пытаешься записать их в числовой параметр, но тут есть и нестыковка по идее у тебя должен писаться значение 1 вместо 0.
P.S. ZennoPoster только начал изучать.
Аллилуйя брат! Ты спас мои нервы. Спасибо тебе!
 
Joined
Mar 23, 2015
Messages
1,301
Reaction score
848
Points
113
Небольшое совет Зенноводам размышляющим над внедрением базы данных в свои проектом и тем кто не использует базы данных.
Ребята, MySQL просто бомба! Мой i5 кое-как тянул 5 потоков парсинга, а когда кол-во строк в чёрном списке превысило 5000 стало совсем печально.
После перехода на БД при тех же 5 потоках нагрузка на процессор 20-25%, а скорость выполнения просто космос!
 
Joined
Mar 23, 2015
Messages
1,301
Reaction score
848
Points
113
Подскажите в чём проблема. при достижение 15-17 тыс строк в таблице mysql нагружает процессор на 50-70%. процессор i5 3.7гГц
У меня база данных на openserver. 2 таблицы. В первой таблице один столбец с ссылками(чёрный список), во второй 2 столбца в первом домен во втором ссылки для работы
логика: шаблон проверяет кол-во строк во второй таблице и если строк больше нуля берёт строку в переменные, далее парсится страница и ссылка идёт в первую таблицу, далее спаренные ссылки проверяются на на наличие их в обоих таблицах и если этой ссылки там нет, она кладётся во вторую таблицу.
5 потоков
 

Attachments

BigBlag

Client
Joined
Jan 31, 2019
Messages
7
Reaction score
3
Points
3
Тебе надо пересмотреть логику твоих приложений. Признаюсь я не очень понял все детали, но это похоже на утечки памяти. Ну не совсем на утечки просто ты очень много данных держишь в оперативной памяти посмотри сколько у тебя занято оперативки в эти моменты. Старайся данные обрабатывать порционно, то есть взял выборку 100 элементов ( чисто для примера думаю эта цифра будет на порядо к больше без ущерба ) обработал их берешь следующие. Не держи много в памяти все что ты задействовал держится в оперативке, но уже по сути тебе не нужно их надо записать и забыть или в БД или в Ексель : D ну ты понял. Утечка памяти актуальна причем даже разработчики признали что в их приложении она присутствует.
Итог: Посмотри нагрузку на оперативку. Можно ее забить, можно стек вызовов переполнить, Можно и циклом Процессор задость тут уже отладка нужна И смотреть где у тебя проблемы.
 
  • Thank you
Reactions: KolkaPetkinSyn

Mikhail B.

Client
Joined
Dec 23, 2014
Messages
14,449
Reaction score
5,477
Points
113

Обращаем Ваше внимание на то, что данный пользователь заблокирован.
Не рекомендуем проводить с Mikhail B. какие-либо сделки.

Подскажите в чём проблема. при достижение 15-17 тыс строк в таблице mysql нагружает процессор на 50-70%. процессор i5 3.7гГц
У меня база данных на openserver. 2 таблицы. В первой таблице один столбец с ссылками(чёрный список), во второй 2 столбца в первом домен во втором ссылки для работы
логика: шаблон проверяет кол-во строк во второй таблице и если строк больше нуля берёт строку в переменные, далее парсится страница и ссылка идёт в первую таблицу, далее спаренные ссылки проверяются на на наличие их в обоих таблицах и если этой ссылки там нет, она кладётся во вторую таблицу.
5 потоков
Попробуй на версии 5.11.7.0
Ось какая?
 
  • Thank you
Reactions: KolkaPetkinSyn

BigBlag

Client
Joined
Jan 31, 2019
Messages
7
Reaction score
3
Points
3
Посмотрел скрины ну там видно конечно что процессор нагружен. Это может быть рекурсия, неправильный цикл да все что угодно нужен код который вызывает это безобразие или финалист одной из Битв Экстрасенсов по другому разобраться тут не возможно (
 
  • Thank you
Reactions: KolkaPetkinSyn

zortexx

Client
Joined
Sep 19, 2011
Messages
2,520
Reaction score
1,227
Points
113
Подскажите в чём проблема. при достижение 15-17 тыс строк в таблице mysql нагружает процессор на 50-70%. процессор i5 3.7гГц
У меня база данных на openserver. 2 таблицы. В первой таблице один столбец с ссылками(чёрный список), во второй 2 столбца в первом домен во втором ссылки для работы
логика: шаблон проверяет кол-во строк во второй таблице и если строк больше нуля берёт строку в переменные, далее парсится страница и ссылка идёт в первую таблицу, далее спаренные ссылки проверяются на на наличие их в обоих таблицах и если этой ссылки там нет, она кладётся во вторую таблицу.
5 потоков
Посмотрите статистику происходящего в MySQL.
 
  • Thank you
Reactions: KolkaPetkinSyn
Joined
Mar 23, 2015
Messages
1,301
Reaction score
848
Points
113
Openserver 2.5.9
время выполнения 1 потока 1-3 секунды
Посмотрите статистику происходящего в MySQL.
скрины статистики прилагаю
 

Attachments

Joined
Mar 23, 2015
Messages
1,301
Reaction score
848
Points
113
Вот единственный цикличный кусок шаблона
в списке может быть до 150 ссылок
 

Attachments

zortexx

Client
Joined
Sep 19, 2011
Messages
2,520
Reaction score
1,227
Points
113
Joined
Mar 23, 2015
Messages
1,301
Reaction score
848
Points
113
log-slow-queries что нибудь показывает?
не могу понять как включить log_slow_queries
 

zortexx

Client
Joined
Sep 19, 2011
Messages
2,520
Reaction score
1,227
Points
113
не могу понять как включить log_slow_queries
Внести изменения в конфиг MySQL (my.cnf)

До версии 5.7
Code:
log_slow_queries        = /var/log/mysql/mysql-slow.log
long_query_time         = 1
Начиная с версии 5.7
Code:
slow_query_log          = /var/log/mysql/mysql-slow.log
long_query_time         = 1
После внесения изменений перезапустить/перезагрузить MySQL.
 
  • Thank you
Reactions: KolkaPetkinSyn
Joined
Mar 23, 2015
Messages
1,301
Reaction score
848
Points
113
Внести изменения в конфиг MySQL (my.cnf)
будите смеяться, но нет у меня такого файла
есть такой MySQL-5.6_my.ini
 

zortexx

Client
Joined
Sep 19, 2011
Messages
2,520
Reaction score
1,227
Points
113
будите смеяться, но нет у меня такого файла
есть такой MySQL-5.6_my.ini
Не принципиально. Это потому что винда.
 
  • Thank you
Reactions: KolkaPetkinSyn
Joined
Mar 23, 2015
Messages
1,301
Reaction score
848
Points
113
Не принципиально. Это потому что винда.
получилось так:
slow_query_log = "%dprogdir%\\userdata\\logs\\slow-query.log"
long_query_time = 1
в группе:
[mysqld]

но в фаил ничего не пишется
 
Joined
Mar 23, 2015
Messages
1,301
Reaction score
848
Points
113
Суд по тишине в теме, подобная нагрузка при выполнение цикла нормальное явление. А можно как нибудь снизить нагрузку?
 

zortexx

Client
Joined
Sep 19, 2011
Messages
2,520
Reaction score
1,227
Points
113
Суд по тишине в теме, подобная нагрузка при выполнение цикла нормальное явление. А можно как нибудь снизить нагрузку?
Ваша проблема, скорее всего, в использовании оператора LIKE
upload_2019-2-9_13-18-58.png

Дело в том, как работает LIKE. При таком запросе не используются индексы, потому что перед искомым текстом может быть любое количество символов.
Вам нужно оптимизировать структуру таблицы. В идеале, использовать FTS. Но, по-моему он работает только в базе типа MyISAM (могу ошибаться).
 
Joined
Mar 23, 2015
Messages
1,301
Reaction score
848
Points
113
Перевёл таблицу в MyISAM таблица black, один столбец ,black_url
C помощью запроса
Code:
CREATE FULLTEXT INDEX black_url ON black(black_url)
Запустил индекс, но запрос не находит совпадение.
Варианты использованных запросов
Code:
SELECT * FROM black WHERE MATCH black_url AGAINST('{-Variable.url-}');
SELECT * FROM black WHERE MATCH(black_url) AGAINST('{-Variable.url-}');
SELECT * FROM black WHERE MATCH ('black_url') AGAINST('{-Variable.url-}');
не совсем понял принципа постановки кавычек и скобок. В примерах они то есть то нет
 

ssXXXss

Client
Joined
Dec 23, 2014
Messages
7,374
Reaction score
2,043
Points
113
использую LIKE и всё норм работает в MySQL

2019-02-09_205603.png
 
  • Thank you
Reactions: KolkaPetkinSyn
Joined
Mar 23, 2015
Messages
1,301
Reaction score
848
Points
113
Joined
Mar 23, 2015
Messages
1,301
Reaction score
848
Points
113
  • SELECT * FROM black WHERE MATCH black_url AGAINST('{-Variable.url-}');
  • SELECT * FROM black WHERE MATCH(black_url) AGAINST('{-Variable.url-}');
  • SELECT * FROM black WHERE MATCH ('black_url') AGAINST('{-Variable.url-}');
нет идей почему запросы не срабатывают?
 

Mikhail B.

Client
Joined
Dec 23, 2014
Messages
14,449
Reaction score
5,477
Points
113

Обращаем Ваше внимание на то, что данный пользователь заблокирован.
Не рекомендуем проводить с Mikhail B. какие-либо сделки.

нет идей почему запросы не срабатывают?
Попробуйте так

SELECT * FROM black WHERE MATCH black_url AGAINST('?');

Внизу поставьте галку использовать переменные, и пропишите туда.

А где запросы тестируете? В зенке? Там лог не информативный, нужно в программе проверять.
 
  • Thank you
Reactions: KolkaPetkinSyn
Joined
Mar 23, 2015
Messages
1,301
Reaction score
848
Points
113
Попробуйте так

SELECT * FROM black WHERE MATCH black_url AGAINST('?');

Внизу поставьте галку использовать переменные, и пропишите туда.

А где запросы тестируете? В зенке? Там лог не информативный, нужно в программе проверять.
не помогло, возвращается пустота. строка точно есть
 

Mikhail B.

Client
Joined
Dec 23, 2014
Messages
14,449
Reaction score
5,477
Points
113

Обращаем Ваше внимание на то, что данный пользователь заблокирован.
Не рекомендуем проводить с Mikhail B. какие-либо сделки.

не помогло, возвращается пустота. строка точно есть
Code:
SELECT * FROM black WHERE MATCH black_url AGAINST('{-Variable.url-}');
SELECT * FROM black WHERE MATCH(black_url) AGAINST('{-Variable.url-}');
SELECT * FROM black WHERE MATCH ('black_url') AGAINST('{-Variable.url-}');
Выполните эти запросы в Heidi и посмотрите, что в логе пишет.
 
Joined
Mar 23, 2015
Messages
1,301
Reaction score
848
Points
113
скрины
 

Attachments

Users Who Are Viewing This Thread (Total: 1, Members: 0, Guests: 1)