За последние 24 часа нас посетили 17657 программистов и 1655 роботов. Сейчас ищут 917 программистов ...

Партиционирование (секционирование) таблиц

Тема в разделе "MySQL", создана пользователем VLK, 30 окт 2014.

  1. VLK

    VLK Старожил

    С нами с:
    15 дек 2013
    Сообщения:
    3.010
    Симпатии:
    58
    ну это понятно что не даст, мне интересно будет ли тормозить партицирование на небольших объемах, по мимо этого меня интересует размер таблиц.

    Добавлено спустя 12 минут 27 секунд:
    и еще вопрос, таблица: id, type и text, по type будет проходить секционирование, а в text будут какие то текст, размер (длина) имеет значение?
     
  2. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    чувак, тебе не нужно это.

    ты просто изобрёл ключи.
     
  3. VLK

    VLK Старожил

    С нами с:
    15 дек 2013
    Сообщения:
    3.010
    Симпатии:
    58
    Ну вот я создаю таблицу, пытаюсь прикрутить к ней секционирование, в итоге получаю ошибку:
    Код (Text):
    1. CREATE TABLE prtn_3 (
    2. `t_id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
    3. `t_type` VARCHAR(64) NOT NULL,
    4. `t_txt` TEXT NOT NULL,
    5. PRIMARY KEY(`t_id`,`t_type`)
    6. )
    как тут описано http://dev.mysql.com/doc/refman/5.6/en/partitioning-columns-list.html
    Код (Text):
    1. ALTER TABLE prtn_3 PARTITION BY LIST COLUMNS (t_type) (
    2. PARTITION p1 VALUES IN ('one'),
    3. PARTITION p2 VALUES IN ('two'),
    4. PARTITION p3 VALUES IN ('three'),
    5. PARTITION p4 VALUES IN ('four'),
    6. PARTITION p5 VALUES IN ('five')
    7. )
    ошибка:
    подскажите что делать? (ну по мимо того что забить:))
     
  4. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    не делай этого, друг
     
  5. metadon

    metadon Активный пользователь

    С нами с:
    6 фев 2006
    Сообщения:
    779
    Симпатии:
    0
    VLK, ошибку так исправить:

    Код (Text):
    1. IN ('five')
    2. );
    развлекайся, хотя лучше запусти один master mysql server для insert и два slave под select, будет больше пользы.
     
  6. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Это ему не нужно, друг. Нету у него никаких нагрузок.
     
  7. VLK

    VLK Старожил

    С нами с:
    15 дек 2013
    Сообщения:
    3.010
    Симпатии:
    58
    не помогает:
     
  8. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    У тебя еще есть шанс! Отступись!
     
  9. MiksIr

    MiksIr Активный пользователь

    С нами с:
    29 ноя 2006
    Сообщения:
    2.339
    Симпатии:
    44
    Проверить версию mysql
     
  10. VLK

    VLK Старожил

    С нами с:
    15 дек 2013
    Сообщения:
    3.010
    Симпатии:
    58
    пишет 5.1.67, а как я понимаю для COLUMNS нужно 5.6, и че теперь делать?
    В смысле как по другому сделать, что бы на 5.1.67 работало и текстовыми значениями
     
  11. metadon

    metadon Активный пользователь

    С нами с:
    6 фев 2006
    Сообщения:
    779
    Симпатии:
    0
    Легче установить версию mysql 5.6
     
  12. VLK

    VLK Старожил

    С нами с:
    15 дек 2013
    Сообщения:
    3.010
    Симпатии:
    58
    Ну некоторые результаты, сделал 3 таблицы:
    Код (Text):
    1. CREATE TABLE prtn_1 (
    2. `t_id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
    3. `t_type` INT NOT NULL,
    4. `t_txt` TEXT NOT NULL,
    5. PRIMARY KEY(`t_id`)
    6. )
    7.  
    8.  
    9. CREATE TABLE prtn_2 (
    10. `t_id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
    11. `t_type` INT NOT NULL,
    12. `t_txt` TEXT NOT NULL,
    13. PRIMARY KEY(`t_id`,`t_type`)
    14. )
    15.  
    16.  
    17. CREATE TABLE prtn_3 (
    18. `t_id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
    19. `t_type` INT NOT NULL,
    20. `t_txt` TEXT NOT NULL,
    21. PRIMARY KEY(`t_id`,`t_type`)
    22. )
    к последней прикрутил:
    Код (Text):
    1. ALTER TABLE prtn_3 PARTITION BY RANGE (t_type) (
    2. PARTITION p1 VALUES LESS THAN (1),
    3. PARTITION p2 VALUES LESS THAN (2),
    4. PARTITION p3 VALUES LESS THAN (3),
    5. PARTITION p4 VALUES LESS THAN (4),
    6. PARTITION p5 VALUES LESS THAN (5),
    7. PARTITION p0 VALUES LESS THAN (MAXVALUE)
    8. )
    забил 20 000 записей в каждую, записи полностью идентичны, первые 2 таблицы работают примерно одинаково, а вот последняя т.е. та что PARTITION, работает медленнее, запрос (это где то предпоследняя запись в БД):
    Код (Text):
    1. SELECT * FROM `prtn_{$num}` WHERE `t_type`='5' AND `t_txt`='bjRptALWD4S4Ik7gsqcATfxZuAHd8hyX6OtQ4Vsh'
    где то примерно так, там 100 или 300 запросов делается, скорость выполнения всего:
    0.02004
    0.023458
    0.111683

    размеры, уже вышел из БД в следующий раз..

    Добавлено спустя 38 секунд:
    Я все нормально организовал или где то накосорезил?
     
  13. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Накосорезил. Ты используешь то, что не должно применяться в данной ситуации и без всякого смысла. Это косяк.
     
  14. VLK

    VLK Старожил

    С нами с:
    15 дек 2013
    Сообщения:
    3.010
    Симпатии:
    58
    так то оно так, да не так, как говорил уже не помню кто, я не использовал, я тестировал.
     
  15. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    тогда x1000 записей, все разные, и потестируй это =)

    20к записей по одному кб это всего-навсего 20 мб, которые уместятся даже в оперативке роутера.
     
  16. Chushkin

    Chushkin Активный пользователь

    С нами с:
    17 дек 2010
    Сообщения:
    1.062
    Симпатии:
    91
    Адрес:
    Мещёра, Центр, Болото N3
    Добавьте индекс KEY(t_type) и посмотрите, что получится.
     
  17. VLK

    VLK Старожил

    С нами с:
    15 дек 2013
    Сообщения:
    3.010
    Симпатии:
    58
    Вы имеете ввиду при создании таблицы добавить KEY(t_type) т.е.:
    Код (Text):
    1. CREATE TABLE prtn_4 (
    2. `t_id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
    3. `t_type` INT NOT NULL,
    4. `t_txt` TEXT NOT NULL,
    5. PRIMARY KEY(`t_id`),
    6. KEY(`t_type`)
    7. )
    или партиционирование по KEY делать? (там есть такое - RANGE, LIST, KEY и т.д.)
     
  18. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Будь мужиком, добавь индекс, блиадь!
     
  19. Chushkin

    Chushkin Активный пользователь

    С нами с:
    17 дек 2010
    Сообщения:
    1.062
    Симпатии:
    91
    Адрес:
    Мещёра, Центр, Болото N3
    Споконо igordata, спокойно. :)
    Что-то НЕпрограммисты последнее время активировались, наверное магнитные бури. :)
     
  20. VLK

    VLK Старожил

    С нами с:
    15 дек 2013
    Сообщения:
    3.010
    Симпатии:
    58
    ну я сделал:
    Код (Text):
    1. ALTER table prtn_2 add KEY (`t_type`);
    2. ALTER table prtn_3 add KEY (`t_type`);
    но все как было так и осталось.
     
  21. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768