@mysql_ru

Страница 67 из 142
Ad.x ??
09.09.2017
10:48:18
на ней индекс, соответственно при каждом просмотре он перестраивается, верно?

Alexey
09.09.2017
10:48:48
обновляется, не перестраивается

это значит, что в индексном дереве нужно найти старое значение, пометить его как удалённое, затем добавить в дерево новое значение

Ad.x ??
09.09.2017
10:52:13
короче с этими generated column появилось очень много SQLSTATE[HY000] [2002] No such file or directory

Google
Ad.x ??
09.09.2017
10:53:05
и другие сайты на сервере тоже крашатся на запросах, мускул чот прочитать походу не может

Alexey
09.09.2017
10:54:03
в error log смотри. думаю, это не про generated columns

Ad.x ??
09.09.2017
11:19:31
ебать приколы с этими колонками... сервер ушатали за 10 минут в ноль )

Alexey
09.09.2017
11:21:31
я совсем недавно гонял разные бенчмарки с generated columns. несколько недель, разные тесты, сотни тысяч запросов в секунду — никаких приколов

Ad.x ??
09.09.2017
11:22:06
они пересчитывались постоянно ?

Alexey
09.09.2017
11:22:16
да

Ad.x ??
09.09.2017
11:22:19
данные в этих колонках

Alexey
09.09.2017
11:22:30
и индексы по ним тоже были

Ad.x ??
09.09.2017
11:30:02
https://pastebin.com/WSDF8fAA Селал так, выкатил на проду и все померло

при каждом визите посетителей обновляются либо current_shows либо current_clicks

их не много, порядка 15тыщ в час

как так умерло все нипанять ))

Alexey
09.09.2017
11:32:20
а индексы-то где?

Google
Ad.x ??
09.09.2017
11:33:11
https://pastebin.com/AG80RAbd тут

ADD KEY `category_id_2` (`category_id`,`best_image`,`tested_image`,`ctr`); составной по сортировке идет эта колонка

До кучи, этот generated column показывает погоду при делении.

Alexey
09.09.2017
14:38:53
До кучи, этот generated column показывает погоду при делении.
тесты с твоей же схемой работают нормально. а версия какая?

Ad.x ??
09.09.2017
14:39:44
Версия сервера: 5.7.14-7-log - Percona Server (GPL), Release 7, Revision 083e298

Alexey
09.09.2017
15:01:08
а покажи запрос, которым ты вот этот скриншот сверху получил?

Ad.x ??
09.09.2017
15:02:54
простая сортировка: SELECT * FROM `videos_stats` ORDER BY `videos_stats`.`ctr` DESC

когда колонка нормальная считает правильно, а когда делаешь динамической, то считает этот цтр как на скрине

может версия корявая, может типы должны совпадать... завтро попробую потестить сначала с типами, потом с версией ))

Alexey
09.09.2017
15:08:01
там ctr идут с определённым шагом 1/2, 1/2.5, 1/3, 1/3.5 и т.д. и меня терзают смутные сомнения, что где-то ты намудрил или не всё рассказываешь

Ad.x ??
09.09.2017
15:09:17
ну схема есть же

все по ней, ниче лишнего

ctr` DOUBLE AS (`total_clicks` / `total_shows`) как тут можно намудрить? )

Alexey
09.09.2017
15:11:53
покажи show create table videos_stats и SELECT * FROM videos_stats LIMIT 1, лучше из консоли, без GUI

Ad.x ??
09.09.2017
15:12:57
минут через 20-30, отойти надо

т.е. целые числа вроде нормально посчитало

по крайней мере тотал клики и тотал показы, а вот их разницу похерило

Alexey
09.09.2017
15:49:15
по крайней мере тотал клики и тотал показы, а вот их разницу похерило
в твоей схеме из скриншота ctr определёно как current_clicks / current_shows. А в той схеме, что ты раньше показывал, как total_clicks / total_shows

Google
Ad.x ??
09.09.2017
15:50:32
точно

вот так-вот... замылился глаз и не те колонки поставил, и все пошло косо криво

но память все равно утекла почему-то

на проде

Alexey
09.09.2017
15:54:17
скорее всего, generated columns там тоже ни при чём

Ad.x ??
09.09.2017
15:57:42
попробую еще раз завтро на проде )) в ночь ставить как-то стремно

Karice
10.09.2017
05:46:37
t.me/telegidka1 — каталог самых полезных и интересных каналов в телеграм.

Oliver
10.09.2017
09:14:29
Всем привет. Почему REPLACE INTO не работает ? Всмысле не заменят, а всегда добавляет новые строки.

Fike
10.09.2017
09:15:34
> REPLACE makes sense only if a table has a PRIMARY KEY or UNIQUE index. Otherwise, it becomes equivalent to INSERT, because there is no index to be used to determine whether a new row duplicates another.

либо же у тебя этот самый индекс не совпадает

Oliver
10.09.2017
09:17:02
Есть и то и то - и индекс совподает) Тупа жму кнопку.

Lucky
10.09.2017
09:18:54
Значит primary key таки не совпадает.

Fike
10.09.2017
09:19:26
etki@vortex ~ $ docker run --rm -e MYSQL_ROOT_PASSWORD=root -p 3306:3306 mysql:5.7 --- etki@vortex ~ $ docker exec mysql mysql -uroot -proot -e 'CREATE DATABASE proof;' etki@vortex ~ $ docker exec mysql mysql -uroot -proot -e 'CREATE TABLE proof.proof (id int PRIMARY KEY AUTO_INCREMENT, value TEXT);' etki@vortex ~ $ docker exec mysql mysql -uroot -proot -e 'REPLACE INTO proof.proof (id, value) VALUES (1, "test");' etki@vortex ~ $ docker exec mysql mysql -uroot -proot -e 'REPLACE INTO proof.proof (id, value) VALUES (1, "test2");' etki@vortex ~ $ docker exec mysql mysql -uroot -proot -e 'SELECT * FROM proof.proof;' id value 1 test2 etki@vortex ~ $

Oliver
10.09.2017
09:20:39
Как это ? id - prime key/ text - uniq Жму кнопку, при это не чего не меняется! Только запрос.

Fike
10.09.2017
09:20:53
ничего

во-вторых, если у вас GUI, то, возможно, стоит перезапустить select-запрос

Google
Fike
10.09.2017
09:23:01
я понятия не имею, с чем вы там работаете

видимо, нажать другую кнопку

Oliver
10.09.2017
09:24:17
Всмысле с чем ?)) mysql(innoDB) + php

Fike
10.09.2017
09:24:41
а кнопку кто рисует?

Oliver
10.09.2017
09:25:30
Кнопку рисует xcode)

Толчнее swift. Просто вызываю php файл с запросом и передаю пару значений через post.

Magic
10.09.2017
09:26:16
Oliver
10.09.2017
09:27:24
ну вот ее и жми, запрос повтори
Да уже 1000 раз нажал, строки не обновляются! Каждый раз новая строка?

Fike
10.09.2017
09:27:33
то есть у тебя изменения происходят на сервере, но ты не обновляешь данные на клиенте?

давай-ка пинпоинтнем проблему

зайди в консоль мускула и руками там этот запрос выполни

Oliver
10.09.2017
09:28:34
Щас попробую..

Упростил запрос до некуда: REPLACE INTO table1 SET text = 'text' Каждый раз новая строка)))

Magic
10.09.2017
09:31:45
стоп

ты что хочешь сделать?

Fike
10.09.2017
09:32:07
каким образом он тебе заменить должен?

по каким признакам?

> REPLACE makes sense only if a table has a PRIMARY KEY or UNIQUE index. Otherwise, it becomes equivalent to INSERT, because there is no index to be used to determine whether a new row duplicates another.

Google
Magic
10.09.2017
09:33:39
Если не трудно разжуйте на примере, я sql нубяра.
Оператор REPLACE работает точно так же, как INSERT, за исключением того, что если старая запись в данной таблице имеет то же значение индекса UNIQUE или PRIMARY KEY, что и новая, то старая запись перед занесением новой будет удалена

https://phpclub.ru/mysql/doc/replace.html

Следует учитывать, что, если не используются индексы UNIQUE или PRIMARY KEY, то применение команды REPLACE не имеет смысла, так как она работает просто как INSERT.

Fike
10.09.2017
09:34:46
Если не трудно разжуйте на примере, я sql нубяра.
ну он же должен как-то понять, какую запись ему заменять

без уникального признака - primary key / unique index - он это понять не в состоянии

Magic
10.09.2017
09:36:17
К вопросу, что ты хочешь сделать? заменить значения поля у уже существующей?

Oliver
10.09.2017
09:36:37
Что то я не пойму.. Вот моя таблица: CREATE TABLE table1 ( id int(11) unsigned NOT NULL AUTO_INCREMENT, text text, PRIMARY KEY (`id`), KEY TEXT (`text`(128)) ) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8;

Страница 67 из 142