Форум программистов, компьютерный форум, киберфорум
MySQL
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/8: Рейтинг темы: голосов - 8, средняя оценка - 4.50
 Аватар для Nebiros
41 / 40 / 16
Регистрация: 23.03.2010
Сообщений: 3,122

mysam и innodb

08.01.2012, 19:55. Показов 1714. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
на сколько я понимаю mysam используют для динамических таблиц там где много записей и перезаписей происходит а innodb для статических где только выборка нужна (поправьте если я неправ). Собирал некую таблицу и так как много было перезаписей то я ее хранил в mysam и теперь когда я уже точно знаю что ничего там небуду менять я ее перегоняю в innodb, перегонку делаю таким способом

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
set_time_limit (6000);
$link=mysql_connect("localhost","user","pass");
mysql_select_db("my_base");
mysql_set_charset("utf8");
$nom=0; $f=fopen("nom.txt","r"); while(!feof($f)){ $nomer=fgets($f); $nom=$nomer+$nom;} fclose($f);
$step=10000;
 
$r=mysql_query("SELECT w FROM my_table LIMIT ".$nom.",".$step);
while($row=mysql_fetch_array($r)){mysql_query("INSERT INTO my_table2 (w) VALUES ('".$row['w']."')");}
 
$nom=$nom+$step; $f=fopen("nom.txt","w+"); $tx=fwrite($f,$nom); fclose($f);
if($nom<3000000){
echo "<script type='text/javascript'>
window.location='/index.php';
</script>";
    }else echo "end";
изначально была таблица с уникальным полем слов а потом я ее перегоняю в таблицу с двумя полями (varchar, и ид инкремент). А вот теперь вопросы такого рода

1) действительно лучше ли innodb против mysam
2) в innodb после 20000 записей число записей постоянно прыгает то вперед то назад и со значком ~ (я так понял точное число неможет показать)
3) 3000000 записей с моим способом перегонки по подсчетам будет длится гдето сутки, нельзяли както ускорить процесс? (если посоветуете крон то пробовал и несильно он и ускоряет, милисекунды...)
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
08.01.2012, 19:55
Ответы с готовыми решениями:

InnoDB vs MyISAM
Всем привет, форумчане. Вопрос к гуру мускула. Есть ли у кого-нибудь реальный опыт работы с озвученными типами таблиц? Что лучше?...

Innodb, TRUNCATE
хз, может кто-то натыкался на такой глюк. Есть innodb таблица. в нее скрипт пишет данные (скрипт на DBSimple). простой скрипт: public...

MyISAM и InnoDB
Добрый день, уважаемые. Не очень разбираюсь в предмете по этому прошу вашего совета. Итак купил хостинг. mysql 5.5. тип бд = MyISAM ...

6
 Аватар для xAtom
935 / 760 / 299
Регистрация: 09.12.2010
Сообщений: 1,346
Записей в блоге: 1
09.01.2012, 23:46
Цитата Сообщение от Nebiros Посмотреть сообщение
1) действительно лучше ли innodb против mysam
InnoDB лучше, чем MyISAM.

Цитата Сообщение от Nebiros Посмотреть сообщение
нельзяли както ускорить процесс?
Вот попробуй такой вариант, пускай mysql у себя делает перегон без php.
PHP
1
mysql_query("INSERT INTO `my_table2`(`w`)  SELECT `my_table`.`w` FROM `my_table` LIMIT $nom,$step");
1
 Аватар для Nebiros
41 / 40 / 16
Регистрация: 23.03.2010
Сообщений: 3,122
10.01.2012, 00:14  [ТС]
Цитата Сообщение от xAtom Посмотреть сообщение
Вот попробуй такой вариант, пускай mysql у себя делает перегон без php.
как же тут без php если в лимите перебираются переменные...
0
 Аватар для xAtom
935 / 760 / 299
Регистрация: 09.12.2010
Сообщений: 1,346
Записей в блоге: 1
10.01.2012, 10:06
Цитата Сообщение от Nebiros Посмотреть сообщение
$r=mysql_query("SELECT w FROM my_table LIMIT ".$nom.",".$step);
while($row=mysql_fetch_array($r)){mysql_ query("INSERT INTO my_table2 (w) VALUES ('".$row['w']."')");}
твой код делает по-строчную вставку в mysql, а я который запрос показал одним махом без лишних выборок сделает, что тут не понятного вообще.
1
Почетный модератор
 Аватар для Humanoid
11559 / 4353 / 453
Регистрация: 12.06.2008
Сообщений: 12,455
10.01.2012, 10:41
Цитата Сообщение от Nebiros Посмотреть сообщение
как же тут без php если в лимите перебираются переменные...
Просто из запроса, который написал xAtom, убери LIMIT вообще. Он несколько минут поработает (а то и меньше) и сразу сделает всю работу.
Либо можешь оставить LIMIT, но убрать после этого "while($row=mysql_fetch_array($r)).. ..", и он будет сразу внутри самого MySQL обрабатывать по 10000 строк (как указано в переменной $step). Это будет во много раз быстрее, чем добавление вручную по одной записи.

Цитата Сообщение от xAtom Посмотреть сообщение
InnoDB лучше, чем MyISAM
Немного уточню... InnoDB более устойчив к сбоям. При неожиданном выключении сервера, в таблицах MyISAM есть шанс потерять несколько строк и потом придётся выполнять REPAIR... с таблицами InnoDB ты, скорее всего, даже не заметишь никаких проблем. Всё исправится само без потерь.
Так же, InnoDB быстрее работает, когда к таблице идут постоянные обращения на чтение и на запись. Но если таблицу только читают и ничего не записывают, то MyISAM будет работать чуточку быстрее. InnoDB не хранит информацию об общем количестве записей, поэтому выполнять запрос
SQL
1
SELECT COUNT(*) FROM tab
для InnoDB нежелательно. Для MyISAM такой запрос очень лёгкий, т.к. ему не надо даже таблицу просматривать... он изначально знает количество строк. Но InnoDB будет читать каждую строку... а с учётом, что указана звёздочка, то читать будет все столбцы и сравнивать со всеми остальными столбцами. Если понадобилось посчитать общее количество столбцов, то можно указать какой-нибудь столбец с уникальным ключом... например, с PRIMARY KEY
SQL
1
SELECT COUNT(id) FROM tab
2
 Аватар для xAtom
935 / 760 / 299
Регистрация: 09.12.2010
Сообщений: 1,346
Записей в блоге: 1
13.01.2012, 09:13
Самое главное достоинство InnoDB в том что она поддерживает транзакции.
0
nemesis1980
14.10.2014, 17:42
Простите за оффтоп, ну все же, я случайно попал на эту страницу, может кому то будет полезно. Переделать тип таблицы можно одним альтером:
ALTER TABLE my_table ENGINE = InnoDB
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
14.10.2014, 17:42
Помогаю со студенческими работами здесь

Innodb MySQL 5.1
Добрый день, подскажите пожалуйста, как можно подключить Innodb на mysql 5.1 ? Утром мой сайт работал, но кто то поковырялся на нем...

Вывод данных в InnoDB
У меня есть таблицы со связями, сделал, все нормально. Но когда делаю запрос SELECT * FROM rasp то мне выводит такой результат а я...

MyISAM или InnoDB
Форумчане, доброго времени суток! Какую систему хранения данных (MyISAM или InnoDB) нужно (лучше) использовать для создания БД...

MyISAM или InnoDB
Здравствуйте! Натолкнулся на интересную статью в интернете, о сравнении типов таблиц MyISAM и Innodb. У каждого типа, есть свои плюсы...

Syntax to use near ENGINE = InnoDB
Доброго времени суток! Сделал диаграмму в воркбенче пытаюсь сделать forward engineer на сервер, выдает ошибку вот скрипт базы ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
Программный отбор значений справочника
Maks 21.03.2026
Установка программного отбора значений справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит предопределенное значение перечислений. Процедура. . .
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru