Size: a a a

2020 May 08

NI

Nickolay Ihalainen in ru_mysql
Alexander
ок, спасибо, пошёл читать про RSU и pt-o-s-c ибо новичок в мускле
источник

V

Vlad in ru_mysql
Andrey Kolkov
Ок. т.е. для индексов для соединения используем минимальные из возможных данного типа? Если tynyint подходит, то используем его unsined? Так?
Использовать минимальные поля в целом хорошая практика. При этом скорость работы будут определять все же запросы и я бы именно подумыванию запросов уделял бы наибольшее время
источник

AK

Andrey Kolkov in ru_mysql
Vlad
Использовать минимальные поля в целом хорошая практика. При этом скорость работы будут определять все же запросы и я бы именно подумыванию запросов уделял бы наибольшее время
Ок. Пасиб.
источник

М

Миша на 54.4% в отпу... in ru_mysql
А в реальной жизни есть причины использовать RSU вместо ptosc с flow-control’ом каким-нить?
источник

NI

Nickolay Ihalainen in ru_mysql
если места нет, pt-osc требует 3 копии таблицы на диске в худшем случае: binlog, таблица, теневая. Если исходная сжатая, то в бинлоге будет несжатое, т.е. ещё больше (ну если бинлог включен).
источник

М

Миша на 54.4% в отпу... in ru_mysql
А, валидно. Спасибо.
источник

AK

Andrey Kolkov in ru_mysql
Ребят, а есть солюшен для изменения типа PK, чтобы в каждой связанной таблице не убивать foreign keys и не править вручную, а тупо во всех связанных поменялись сами?
источник

NI

Nickolay Ihalainen in ru_mysql
FK - боль и страдания.
источник

AK

Andrey Kolkov in ru_mysql
Nickolay Ihalainen
FK - боль и страдания.
ну, зато во многом удобно...
источник

A

Alex in ru_mysql
Andrey Kolkov
ну, зато во многом удобно...
ага, мне вон нужно на большой горячей табличке PK с int u на bigint u перебить, а то автоинкремент заканчивается, а там к ней/от нее еще несколько FK и любимая бага мускуля - сброс кардиналити в 0 если делаешь альтер на пк с включенной persistent stats https://bugs.mysql.com/bug.php?id=84654
и начинаются пляски с переключением нагрузки и вот это вот все
источник

AK

Andrey Kolkov in ru_mysql
Alex
ага, мне вон нужно на большой горячей табличке PK с int u на bigint u перебить, а то автоинкремент заканчивается, а там к ней/от нее еще несколько FK и любимая бага мускуля - сброс кардиналити в 0 если делаешь альтер на пк с включенной persistent stats https://bugs.mysql.com/bug.php?id=84654
и начинаются пляски с переключением нагрузки и вот это вот все
на 8ке такой же баг?
источник

A

Alex in ru_mysql
там вроде починили с 8.0.13
источник

A

Alex in ru_mysql
но я б проверил)
тем более тесткейс в багрепорте есть
источник

AK

Andrey Kolkov in ru_mysql
SET group_concat_max_len = 2048;
SET @database_name = "my_database";
SET @table_name = "my_table";
SET @change = "int unsigned";
SELECT DISTINCT
      table_name,
      column_name,
      constraint_name,
      referenced_table_name,
      referenced_column_name,
      CONCAT(
          GROUP_CONCAT('ALTER TABLE `',table_name,'` DROP FOREIGN KEY `',constraint_name, '`' SEPARATOR ';'),
          ';',
          GROUP_CONCAT('ALTER TABLE `',table_name,'` CHANGE `',column_name,'` `',column_name,'` ',@change SEPARATOR ';'),
          ';',
          CONCAT('ALTER TABLE `',@table_name,'` CHANGE `',referenced_column_name,'` `',referenced_column_name,'` ',@change, ' NOT NULL AUTO_INCREMENT'),
          ';',
          GROUP_CONCAT('ALTER TABLE `',table_name,'` ADD CONSTRAINT `',constraint_name,'` FOREIGN KEY(',column_name,') REFERENCES ',referenced_table_name,'(',referenced_column_name,')' SEPARATOR ';'),
          ';'
      ) AS query
FROM   information_schema.key_column_usage
WHERE  referenced_table_name is not null
  AND referenced_column_name is not null
  AND constraint_schema = @database_name
  AND referenced_table_name = @table_name
GROUP BY referenced_table_name

Может кому пригодится, это работает, как следует.
источник

AK

Andrey Kolkov in ru_mysql
А почему так происходит?
источник

AK

Andrey Kolkov in ru_mysql
SET group_concat_max_len = 2048;
SET @database_name = "med_copy";
SET @table_name = "pathogen";
SET @change = "int unsigned";
SELECT DISTINCT    
      table_name,
      column_name,
      constraint_name,
      referenced_table_name,
      referenced_column_name,
      CONCAT(          
          CONCAT('ALTER TABLE `',@table_name,'` CHANGE `',referenced_column_name,'` `',referenced_column_name,'` ',@change, ' NOT NULL AUTO_INCREMENT'),
          ';'          
      ) INTO  @a, @b, @c, @d, @e, @queries
FROM `information_schema`.`key_column_usage`
WHERE  `referenced_table_name` is not null
  AND `referenced_column_name` is not null
  AND `constraint_schema` = @database_name
  AND `referenced_table_name` = @table_name
GROUP BY `referenced_table_name`;

PREPARE pkChange FROM @queries;

Вот на такой запрос? Что не так?
источник
2020 May 09

AK

Andrey Kolkov in ru_mysql
Вообще круто, за 5 минут поправил все что было нужно. В иной ситуации, ушли бы часы на все это. Надеюсь кому-нибудь пригодится.
источник

G

Gerda in ru_mysql
С днем победы!
источник

cS

cpt. Jack Sparrow in ru_mysql
У MySQL есть крутая штука, binlog group commit. Позволяет записывать более одной транзакции в бинлог и вызвать для них 1 раз fsync. Далее данные транзакции могут быть выполнены параллельно на реплике. Вопрос такой - как определить по бинлогу\релею какие транзакции могут быть выполнены слейвом параллельно? Слейв ведь это умеет определять, как он это делает, в какую сторону ггулить?
источник

AK

Alexey Kopytov in ru_mysql
cpt. Jack Sparrow
У MySQL есть крутая штука, binlog group commit. Позволяет записывать более одной транзакции в бинлог и вызвать для них 1 раз fsync. Далее данные транзакции могут быть выполнены параллельно на реплике. Вопрос такой - как определить по бинлогу\релею какие транзакции могут быть выполнены слейвом параллельно? Слейв ведь это умеет определять, как он это делает, в какую сторону ггулить?
гуглить всё, что пишет вот этот почтенный господин. в частности, вот тут есть прямой ответ на вопрос: https://jfg-mysql.blogspot.com/2017/02/metric-for-tuning-parallel-replication-mysql-5-7.html
источник