Поставил по рекомендации хороших людей Open Server, все работает все хорошо, решил потестировать MySQL, посаздовать таблицы, позабивать их данными посмотреть, что сколько будет занимать, чё по чём. До этого я тестил кое что другое и там у меня таблицы приличные были по размеру, одна 350 МБ, вторая на 200 МБ, но там у каждой таблицы было всего 2 файла, один с расширением .ibd второй .frm В таблицах присутствуют индексы и уникальные индексы. А в том что я сейчас делаю там появилось полно новых непонятных файлов, с расширением .ibd типа примерно как то так: http://s017.radikal.ru/i407/1412/ad/24d63020f066.jpg Вопрос собственно стало просто интересно, что за файлы, почему их так много, временные ли это файлы и исчезнут ли они потом (пока они не спешат исчезать), т.к. до того как я начал забивать БД MySQL потреблял 50 МБ ОП, а после 200++ МБ, хотя уже ни каких действий не выполняется. В этих таблицах присутствуют индексы и в отличии от того что я привел там где все нормально, тут присутствует FULLTEXT. Вообщем то таблица выглядит так: Код (Text): string tb = "CREATE TABLE tbl_" + i +" (" + "\n" + "id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY," + "\n" + "author INT UNSIGNED NOT NULL," + "\n" + "create_date datetime NOT NULL DEFAULT '0000-00-00 00:00:00'," + "\n" + "edit_date datetime NOT NULL DEFAULT '0000-00-00 00:00:00'," + "\n" + "type VARCHAR(20) NOT NULL DEFAULT 'page'," + "\n" + "content LONGTEXT NOT NULL," + "\n" + "title TEXT NOT NULL," + "\n" + "status VARCHAR(20) NOT NULL DEFAULT 'publish'," + "\n" + "name VARCHAR(200) NOT NULL DEFAULT ''," + "\n" + "parent INT UNSIGNED NOT NULL DEFAULT '0'," + "\n" + "optional TEXT," + "\n" + "INDEX(id)," + "\n" + "INDEX(type)," + "\n" + "INDEX(author)," + "\n" + "FULLTEXT(content)," + "\n" + "FULLTEXT(title)," + "\n" + "FULLTEXT(content, title)" + "\n" + ")"; // FULLTEXT Создаю и забиваю их через ПО на C#.
.frm - form - заголовок таблицы. мускул создает такой файл для каждой таблицы .ibd - inno database - файл данных движка InnoDB. чаще всего он один на все таблицы. когда доходит до лимита страницы - создается следующий файл. и так далее. но можно в настройках субд включить чтоб для каждой таблицы создавался отдельный файл. для MyISAM помимо фрм будет еще два файла лежать с названием таблицы: MYD - MYiasm Data и MYI - MYisam Index. соответственно данные таблицы и содержимое индекса таблицы. fulltext не может быть в idb-файле ибо innodb не имеет механизма полнотекстового индекса. 600 ibd файлов это изучать надо. либо так настроено либо система что-то перекладывает.
т.е. это не нормально? Я ни чего не настраивал, как скачал этот Open server так его и использую, а я думаю те, кто его делают грамотно настроили, может это от того что я жестко забивал БД, я через программу написанную на C# забивал БД, т.е. там было 2 цикла Код (Text): for(int i = 0; i < 10000; i++) { // тут создание таблицы for(int u = 0; u < 10000; u++) { //тут добавление в ранее созданную таблицу записей на более 5000 символов + доп поля } } и на добавление записи 10мс пауза. Добавлено спустя 6 минут 55 секунд: Я раньше как то не учитывал движки (типы таблиц) потому что про них не знал, видимо косяк в InnoDB, сейчас почитал немного, я как понимаю мне надо было использовать MyISAM, завтра удалю все что натворил и буду по новой забивать уже MyISAM
никакого косяка нет. ты просто не понимаешь зачем разные движки существуют. а они существуют. и работают так как им оптимально для достижения их целей. 600 файлов нормально или нет зависит от а) настроек сервера, б) выполняемой задачи. я могу ткнуть пальцем в небо что ты создал флуд и движок чтоб не терять данные начал размещать временные таблицы в файлах на диске. а потом как бы должен был бы слить в базовую страницу. но это догадка. так это или не так мы не узнаем.
Удалил старое, сделал с использованием MyISAM, все нормально, по 3 файла на таблицу. Спасибо за разъяснения.
ну если тебе скорость полнотекстовых запросов то конечно майисам. а если сохранность данных - тогда надо было оставаться на иннодиби ибо с какой-то там версии вполне логично что этот движок делается умолчательным. то есть если у тебя грамотный архитектор приложения в целом и базы данных в частности - не трудно будет подобрать данные для вынесения в таблицу типа майисам. а все остальные транзакционные плюшки нужно оставлять в инно. у меня например на паре таблиц иннодб висят триггеры которые модифицируют данные в избыточной таблице майисам что дает мне полнотекстовый поиск без потери возможностей транзакций.
А если поиск с множеством LIKE '%...%', по типу как написано тут - viewtopic.php?f=20&t=51139&p=407154
да, наверное я не правильно поставил вопрос, поиск по как из таблиц будет быстрее если поиск осуществляется при помощи LIKE? или одинаково? (InnoDB и MyISAM)
а теперь прочитай перефразированный запрос. черт ногу сломит... короче. ты пытаешься сравнить помидор красный и у трактора дверь вот так открывается. два движка имеют свои назначения. лайк и фултекст имеют разную логику работы. ты еще сравни апач и майэскьюэль. а чо? оба - процессы выполняющиеся в качестве серверов. шо их теперь нельзя сравнивать что ли? судя по твоей логике - можно. почему ты пытаешься сравнить жопу с пальцем? ну кроме того что ты ничего не знаешь и это порождает глупые вопросы?
5.6.4+ а под дебами эта ветка к экспериментам относится. 5.5.40 - за него они готовы впрягаться в случае чего. так что условно пока не имеет. никто конечно не запрещает на проде руками собирать но тогда юридически ответственность перекладывается на рукосборщика а не на ментейнера пакета в оси. как-то неудобно.
нет, как раз я считаю что это очень давно. но это относится к скорости ментейнеров операционки. если прям совсем нужны какие-то фичи из современного сырого софта - никто не запрещает рисковать.