- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Как снизить ДРР до 4,38% и повысить продажи с помощью VK Рекламы
Для интернет-магазина инженерных систем
Мария Лосева
В 2023 году 36,9% всех DDoS-атак пришлось на сферу финансов
А 24,9% – на сегмент электронной коммерции
Оксана Мамчуева
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Ну и апдейт 50К записей - это несложная задача, тут даже проблема с пересчётом индексов не должно возникнуть. Такое ощущение, что что-то где-то не так, и как мне кажется вешается не mysql, а что-то другое. Случайно не через пхпмайдмин пытаетесь загнать дамп?
Если решать задачу "в лоб", это 50к запросов в базу. Если это вирт.хостинг, да еще мускул на отдельном сервере (в том смысле что запросы еще по сети гоняются), он не то что может упасть - он должен падать:)
Miracle,
по первому пункту подробнее не знаю как объяснить. Там простые условия:)
Т.е. 3 апдейта вида
заменяются на
По второму пункту, чуть сложнее. Но суть
в том, что Вы делаете выборку count(*) количества записей для каждого отдельного поста, и выставляете ее в поле. Объединение идет по условию wp_posts.ID=wp_comments.comment_post_ID
Для Вашего примера это должно быть нечто вроде
И последнее что хотелось бы отметить.
Если бьете выборку, бейте ее как-нибудь однозначно. Тут лучше делать order by blog_id например. Т.к. количество комментов у Вас может оказаться одинаковым в разных блогах, и сортировка выборки при одинаковом кол-ве комментов будет непредсказуемой. То есть пары blog_id, count(blog_id) могут выбраться как 12, 10 ; 15, 10; 20, 10 или как 15, 10; 20, 10; 12, 10 ; . И если это попадет на границу лимита, то часть блогов можете упустить при апдейте, а часть проапдейтить дважды.
Если это вирт.хостинг
ну какбы выше уже написали
Сервех 2х процессорный 8 гб памяти - дохлый?
:)
Miracle,
Тут возникает вопрос именно откуда берётся повод для пересчёта? Таблицы MyISAM, конечно, не особо предназначены для высокоточных данных, но и терять данные вроде бы не должны в таких размерах, чтобы это на что-то влияло в данной ситуации.
Сервех 2х процессорный 8 гб памяти
на нем два живучих проекта 25 к уников вместе и два пхпбб2 форума
IMHO надо начать с настроек базы:)
my.cnf покажите.
Тут возникает вопрос именно откуда берётся повод для пересчёта? Таблицы MyISAM, конечно, не особо предназначены для высокоточных данных, но и терять данные вроде бы не должны в таких размерах, чтобы это на что-то влияло в данной ситуации.
немного их актуализировал :) ничего не теряется.
my.cnf покажите.
если что то подскажете буду признателен
slow_query_log = 1
#general_log = 1
#general_log_file = '/var/log/mysql/query.log'
binlog-format=MIXED
log-bin
sync-binlog=1
log-bin-trust-function-creators
log-error=/var/log/mysql/error.log
slow-query-log-file=/var/log/mysql/slow.log
port = 3306
socket = /tmp/mysql.sock
skip-locking
max_allowed_packet = 1M
table_cache = 4096
table_open_cache = 4096
sort_buffer_size = 20M
net_buffer_length = 8K
read_buffer_size = 20M
read_rnd_buffer_size = 20M
myisam_sort_buffer_size = 64M
myisam_use_mmap
thread_concurrency=3
thread_stack=1M
max_connections = 750
max_user_connections = 700
thread_cache_size = 32
query-cache-type=1
query_cache_size=50M
query_cache_limit=20M
join_buffer_size=50M
key_buffer_size=200M
tmp_table_size=200M
max_heap_table_size=500M
[mysqld0]
slow_query_log = 1
#general_log = 1
#general_log_file = '/var/log/mysql/query.log'
datadir=/var/mysql
log-error=/var/log/mysql/error.log
slow-query-log-file=/var/log/mysql/slow.log
port = 3306
socket = /tmp/mysql.sock
[mysqld1]
slow_query_log = 1
#general_log = 1
#general_log_file = '/var/log/mysql/query.log'
datadir=/var/db/mysql-a
log-error=/var/log/mysql/error-a.log
slow-query-log-file=/var/log/mysql/slow-a.log
#pid-file=/var/run/mysql-a.sock
skip-networking
port = 3307
socket = /tmp/mysql-a.sock
skip-locking
max_allowed_packet = 1M
table_cache = 4096
table_open_cache = 4096
sort_buffer_size = 20M
net_buffer_length = 8K
read_buffer_size = 20M
read_rnd_buffer_size = 20M
myisam_sort_buffer_size = 64M
myisam_use_mmap
thread_concurrency=3
thread_stack=1M
max_connections = 750
max_user_connections = 700
thread_cache_size = 32
query-cache-type=1
query_cache_size=50M
query_cache_limit=20M
join_buffer_size=50M
key_buffer_size=200M
tmp_table_size=200M
max_heap_table_size=500M
[mysqld2]
slow_query_log = 1
#general_log = 1
#general_log_file = '/var/log/mysql/query.log'
datadir=/var/db/mysql-b
log-error=/var/log/mysql/error-b.log
slow-query-log-file=/var/log/mysql/slow-b.log
#pid-file=/var/run/mysql-b.sock
skip-networking
port = 3308
socket = /tmp/mysql-b.sock
skip-locking
Miracle добавил 29.09.2009 в 16:03
видимо настройка самая первая раз подключаюсь так
Первое, что бросилось в глаза:
sort_buffer_size = 20M
net_buffer_length = 8K
read_buffer_size = 20M
read_rnd_buffer_size = 20M
max_connections = 750
Не многовато ли?
Проверьте по топу, при выполнении этих проблемных запросов, не начинает ли MySQL отжирать всю память сервера, подвешивая его в конце концов?
$read_buffer_size+$read_rnd_buffer_size+$sort_buffer_size+$thread_stack+$join_buffer_size+$binlog_cache_size)*$max_connections
Маэскуэль временами жрет около 100% , так что это бывает :)
Однако памяти как минимум всегда 2гига чистых
Я кстати можт проглядел, поэтому спрошу на всякий: а у вас эта табличка уж не InnoDB ли?
neolord,
) ENGINE=MyISAM AUTO_INCREMENT=48716 DEFAULT CHARSET=cp1251;
проглядели :)
как можно через mysql_query организовать множественный апдейт.
если отсылать по одному он вешает сервер.
спасибо.
Не о том думаете в оптимизации Ваших запросов. Вот это будет работать существенно быстрее, чем Ваш запрос:
По-моему таки Replace будет работать еще быстрее