[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: MyISAM и InnoDB
Гость_Hello
Всем привет, сменил в одной таблице - тип таблицы с MyISAM на InnoDB. Строк в этой таблице 25000. При заходе на localhost/база показываются "таблицы,строки, тип, размер и так далее". Так вот вопрос - иногда когда обновляя localhost/база - в той самой таблице которую я сменил на InnoDB строк показывается на 1000 с чем-то больше чем их есть на самом деле - показываются так со знаком ~количество, а без знака ~ истинное число строк.
Как понимать ~ и почему строк показывается на 5% больше? объясните пожалуйста новичку.
GET
В типе INNODB для получения статусной информации по таблице используется приблизительный подсчет строк если число строк больше указанного в директиве:
$cfg['MaxExactCount'], по умолчанию 20000. Если же вызвать количество строк командно, т.е. например запросом SELECT COUNT(*), то количество укажет точно.

_____________
Не тот велик, кто не падал, а тот кто падал и поднимался.
sergeiss
InnoDB работает с транзакциями, возможно поэтому. То есть, при обновлении на самом деле сначала создаются новые строки, а старые помечаются как удаленные. После чего, когда-то, удаленные будут удалены физически.
В данном случае это всё "моя ИМХА" smile.gif Потому что именно с Мускулем я во всех тонкостях не знаком. Но основано мнение на опыте и знаниях работы с другими БД и таблицами, начиная еще с DBase.
Когда помеченные строки будут удалены - это я не знаю. Во многих других БД для этого существуют специальные команды. А как это делает Мускуль, я не знаю.

Для аналогии. Вот представь. У тебя есть мешок картошки весом 20 кг. Ты знаешь, что одна картофелина весит, в среднем, 100 гр. Итого - в мешке примерно 200 картофелин. Но когда ты начнешь их перебирать, и удалишь "помеченные гнилью", то останется реально количество картофелин, которые ты можешь использовать для готовки. Пусть это будет 173 картофелины smile.gif Но зато это уже реально количество, с которым можно работать.

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
Guest
этот глюк в phpmyadmin почему то отображается и именно для InnoDB
GET
Guest
Какой это глюк? Причем здесь phpmyadmin? Я вам написал причину первым постом.

_____________
Не тот велик, кто не падал, а тот кто падал и поднимался.
glock18
Цитата (Guest @ 15.06.2013 - 10:20)
этот глюк в phpmyadmin почему то отображается и именно для InnoDB

слушайте ABC wink.gif

в этом вот плане:
Цитата
В типе INNODB для получения статусной информации по таблице используется приблизительный подсчет строк
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.