За последние 24 часа нас посетили 16574 программиста и 1578 роботов. Сейчас ищут 900 программистов ...

Много файлов у таблицы

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

  1. VLK

    VLK Старожил

    С нами с:
    15 дек 2013
    Сообщения:
    3.010
    Симпатии:
    58
    Поставил по рекомендации хороших людей Open Server, все работает все хорошо, решил потестировать MySQL, посаздовать таблицы, позабивать их данными посмотреть, что сколько будет занимать, чё по чём.

    До этого я тестил кое что другое и там у меня таблицы приличные были по размеру, одна 350 МБ, вторая на 200 МБ, но там у каждой таблицы было всего 2 файла, один с расширением .ibd второй .frm В таблицах присутствуют индексы и уникальные индексы.

    А в том что я сейчас делаю там появилось полно новых непонятных файлов, с расширением .ibd типа примерно как то так: http://s017.radikal.ru/i407/1412/ad/24d63020f066.jpg

    Вопрос собственно стало просто интересно, что за файлы, почему их так много, временные ли это файлы и исчезнут ли они потом (пока они не спешат исчезать:)), т.к. до того как я начал забивать БД MySQL потреблял 50 МБ ОП, а после 200++ МБ, хотя уже ни каких действий не выполняется.

    В этих таблицах присутствуют индексы и в отличии от того что я привел там где все нормально, тут присутствует FULLTEXT.

    Вообщем то таблица выглядит так:
    Код (Text):
    1.             string tb = "CREATE TABLE tbl_" + i +" (" + "\n" +
    2.                 "id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY," + "\n" +
    3.                 "author INT UNSIGNED NOT NULL," + "\n" +
    4.                 "create_date datetime  NOT NULL DEFAULT '0000-00-00 00:00:00'," + "\n" +
    5.                 "edit_date datetime  NOT NULL DEFAULT '0000-00-00 00:00:00'," + "\n" +
    6.                 "type VARCHAR(20) NOT NULL DEFAULT 'page'," + "\n" +
    7.                 "content LONGTEXT NOT NULL," + "\n" +
    8.                 "title TEXT NOT NULL," + "\n" +
    9.                 "status VARCHAR(20) NOT NULL DEFAULT 'publish'," + "\n" +
    10.                 "name VARCHAR(200) NOT NULL DEFAULT ''," + "\n" +
    11.                 "parent INT UNSIGNED NOT NULL DEFAULT '0'," + "\n" +
    12.                 "optional TEXT," + "\n" +
    13.                 "INDEX(id)," + "\n" +
    14.                 "INDEX(type)," + "\n" +
    15.                 "INDEX(author)," + "\n" +
    16.                 "FULLTEXT(content)," + "\n" +
    17.                 "FULLTEXT(title)," + "\n" +
    18.                 "FULLTEXT(content, title)" + "\n" +
    19.                 ")"; // FULLTEXT
    Создаю и забиваю их через ПО на C#.
     
  2. Ganzal

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

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    .frm - form - заголовок таблицы. мускул создает такой файл для каждой таблицы
    .ibd - inno database - файл данных движка InnoDB. чаще всего он один на все таблицы. когда доходит до лимита страницы - создается следующий файл. и так далее. но можно в настройках субд включить чтоб для каждой таблицы создавался отдельный файл.

    для MyISAM помимо фрм будет еще два файла лежать с названием таблицы: MYD - MYiasm Data и MYI - MYisam Index. соответственно данные таблицы и содержимое индекса таблицы.

    fulltext не может быть в idb-файле ибо innodb не имеет механизма полнотекстового индекса.

    600 ibd файлов это изучать надо. либо так настроено либо система что-то перекладывает.
     
  3. VLK

    VLK Старожил

    С нами с:
    15 дек 2013
    Сообщения:
    3.010
    Симпатии:
    58
    т.е. это не нормально? Я ни чего не настраивал, как скачал этот Open server так его и использую, а я думаю те, кто его делают грамотно настроили, может это от того что я жестко забивал БД, я через программу написанную на C# забивал БД, т.е. там было 2 цикла
    Код (Text):
    1. for(int i = 0; i < 10000; i++)
    2. {
    3.     // тут создание таблицы
    4.  
    5.     for(int u = 0; u < 10000; u++)
    6.     {
    7.         //тут добавление в ранее созданную таблицу записей на более 5000 символов + доп поля
    8.     }
    9. }
    и на добавление записи 10мс пауза.

    Добавлено спустя 6 минут 55 секунд:
    Я раньше как то не учитывал движки (типы таблиц) потому что про них не знал, видимо косяк в InnoDB, сейчас почитал немного, я как понимаю мне надо было использовать MyISAM, завтра удалю все что натворил и буду по новой забивать уже MyISAM :)
     
  4. Ganzal

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

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    никакого косяка нет. ты просто не понимаешь зачем разные движки существуют. а они существуют. и работают так как им оптимально для достижения их целей. 600 файлов нормально или нет зависит от а) настроек сервера, б) выполняемой задачи. я могу ткнуть пальцем в небо что ты создал флуд и движок чтоб не терять данные начал размещать временные таблицы в файлах на диске. а потом как бы должен был бы слить в базовую страницу. но это догадка. так это или не так мы не узнаем.
     
  5. VLK

    VLK Старожил

    С нами с:
    15 дек 2013
    Сообщения:
    3.010
    Симпатии:
    58
    Удалил старое, сделал с использованием MyISAM, все нормально, по 3 файла на таблицу.

    Спасибо за разъяснения.
     
  6. Ganzal

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

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    ну если тебе скорость полнотекстовых запросов то конечно майисам. а если сохранность данных - тогда надо было оставаться на иннодиби ибо с какой-то там версии вполне логично что этот движок делается умолчательным. то есть если у тебя грамотный архитектор приложения в целом и базы данных в частности - не трудно будет подобрать данные для вынесения в таблицу типа майисам. а все остальные транзакционные плюшки нужно оставлять в инно. у меня например на паре таблиц иннодб висят триггеры которые модифицируют данные в избыточной таблице майисам что дает мне полнотекстовый поиск без потери возможностей транзакций.
     
  7. VLK

    VLK Старожил

    С нами с:
    15 дек 2013
    Сообщения:
    3.010
    Симпатии:
    58
    А если поиск с множеством LIKE '%...%', по типу как написано тут - viewtopic.php?f=20&t=51139&p=407154
     
  8. Ganzal

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

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    ты ощущаешь разницу между строкой и релевантной строкой?
     
  9. VLK

    VLK Старожил

    С нами с:
    15 дек 2013
    Сообщения:
    3.010
    Симпатии:
    58
    да, наверное я не правильно поставил вопрос, поиск по как из таблиц будет быстрее если поиск осуществляется при помощи LIKE? или одинаково? (InnoDB и MyISAM)
     
  10. Ganzal

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

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    а теперь прочитай перефразированный запрос. черт ногу сломит...
    короче. ты пытаешься сравнить помидор красный и у трактора дверь вот так открывается. два движка имеют свои назначения. лайк и фултекст имеют разную логику работы. ты еще сравни апач и майэскьюэль. а чо? оба - процессы выполняющиеся в качестве серверов. шо их теперь нельзя сравнивать что ли? судя по твоей логике - можно. почему ты пытаешься сравнить жопу с пальцем? ну кроме того что ты ничего не знаешь и это порождает глупые вопросы?
     
  11. Chushkin

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

    С нами с:
    17 дек 2010
    Сообщения:
    1.062
    Симпатии:
    91
    Адрес:
    Мещёра, Центр, Болото N3
    Давно имеет.
    И да, - "FTS_..." это файлы полнотекстового индекса при "innodb_file_per_table = 1".
     
  12. Ganzal

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

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    5.6.4+ а под дебами эта ветка к экспериментам относится. 5.5.40 - за него они готовы впрягаться в случае чего. так что условно пока не имеет. никто конечно не запрещает на проде руками собирать но тогда юридически ответственность перекладывается на рукосборщика а не на ментейнера пакета в оси. как-то неудобно.
     
  13. Chushkin

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

    С нами с:
    17 дек 2010
    Сообщения:
    1.062
    Симпатии:
    91
    Адрес:
    Мещёра, Центр, Болото N3
    Это их проблемы.

    Добавлено спустя 4 минуты 9 секунд:
    Вы считаете, что 3 года это недавно? ;)
     
  14. Ganzal

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

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    нет, как раз я считаю что это очень давно. но это относится к скорости ментейнеров операционки. если прям совсем нужны какие-то фичи из современного сырого софта - никто не запрещает рисковать.