Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Первичные ключи
 
 автор: PantiL   (17.02.2005 в 23:51)   письмо автору
 
 

Ключ база вычисляет по следующему принципу - находит максимальный ключ и увеличивает его на 1, так?
А что произойдет когда база доберется до максимального значения ключа(например типа инт)?

   
 
 автор: cheops   (18.02.2005 в 00:06)   письмо автору
 
   для: 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).

   
 
 автор: PantiL   (18.02.2005 в 00:12)   письмо автору
 
   для: cheops   (18.02.2005 в 00:06)
 

Но всеравно теоретически любой тип может закончиться....т.е. получается все базы данных не надежны?

   
 
 автор: cheops   (18.02.2005 в 00:26)   письмо автору
 
   для: PantiL   (18.02.2005 в 00:12)
 

Величина 18446744073709551616 достаточно большая, даже если хранить в каждой записи только первичный ключ, то получается что размер таблицы достигает 137438953472 Гб (это без учёта индексации - индексы занимают зачатую больше места, чем данные). MySQL - это быстрая текстовая база, не расчитанная на таблицы даже в несколько десятков Гб http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=395 - она просто рушится. Поэтому ненадёжность постигает её за долго до достижения пределов в первичном ключе. На самом деле так и должно быть, по закону сохранения за всё в мире нужно платить. Если с базой данных удобнее разрабатывать программы, она будет в целом медленнее и менее надёжнее, чем файловая система, так как база данных надстройка над ней. Точно так же медленее будет операционная система реального времени по сравнению с обычной, так как такая система просто дожидается реперной точки и в избыток времени до неё ничего не делает - любое ограничение приводит к дополнительной плате. Другое дело, что исскуство разработчиков и их предшественников, которое заложенно в базу данных вряд ли можно запросто переплюнуть и создать файловое приложение, которое будет надёжнее и быстрее базы данных - в любом случае на PHP это не удастся, он для этого не предназначен...

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования