|
|
|
| Ключ база вычисляет по следующему принципу - находит максимальный ключ и увеличивает его на 1, так?
А что произойдет когда база доберется до максимального значения ключа(например типа инт)? | |
|
|
|
|
|
|
|
для: PantiL
(17.02.2005 в 23:51)
| | Будет сбой - с выдачей ошибки "дублирование первичного ключа", чтобы этого избежать следует выбирать тип соответствующей длины
TINYINT - 1 байт - от -128 до 127 (от -2^7 до 2^7-1) от 0 до 255 (от 0 до 2^8-1)
SMALLINT - 2 байта - от -32768 до 32767 (от -2^15 до 2^15-1) от 0 до 65535 (от 0 до 2^16-1)
MEDIUMINT - 3 байта - от -8388608 до 8388608 (от -2^23 до 2^23-1) от 0 до 16777215 (от 0 до 2^24-1)
INT - 4 байта - от -2147683648 до 2147683648 (от -2^31 до 2^31-1) от 0 до 4294967295 (от 0 до 2^32-1)
BIGINT - 8 байт - (от -2^63 до 2^63-1) (от 0 до 2^64)
|
Различие между ними заключается в диапазоне величин, которые можно хранить в столбцах такого типа. Чем больше диапазон значений у типа данных, тем больше памяти для него требуется. Целы типы данных могут быть объявлены как положительные. Для этого после объявления типа следует разместить ключевое слово UNSIGNED. В этом случае элементам данного столбца нельзя будет присвоить отрицательные значения, но зато можно будет использовать в два раза больше значений (так как отсчёт идёт не от отрицательной величины, а от 0). | |
|
|
|
|
|
|
|
для: cheops
(18.02.2005 в 00:06)
| | Но всеравно теоретически любой тип может закончиться....т.е. получается все базы данных не надежны? | |
|
|
|
|
|
|
|
для: PantiL
(18.02.2005 в 00:12)
| | Величина 18446744073709551616 достаточно большая, даже если хранить в каждой записи только первичный ключ, то получается что размер таблицы достигает 137438953472 Гб (это без учёта индексации - индексы занимают зачатую больше места, чем данные). MySQL - это быстрая текстовая база, не расчитанная на таблицы даже в несколько десятков Гб http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=395 - она просто рушится. Поэтому ненадёжность постигает её за долго до достижения пределов в первичном ключе. На самом деле так и должно быть, по закону сохранения за всё в мире нужно платить. Если с базой данных удобнее разрабатывать программы, она будет в целом медленнее и менее надёжнее, чем файловая система, так как база данных надстройка над ней. Точно так же медленее будет операционная система реального времени по сравнению с обычной, так как такая система просто дожидается реперной точки и в избыток времени до неё ничего не делает - любое ограничение приводит к дополнительной плате. Другое дело, что исскуство разработчиков и их предшественников, которое заложенно в базу данных вряд ли можно запросто переплюнуть и создать файловое приложение, которое будет надёжнее и быстрее базы данных - в любом случае на PHP это не удастся, он для этого не предназначен... | |
|
|
|