Производительность: UUID против автоинкремента в cakephp-mysql - PullRequest
4 голосов
/ 20 октября 2010

Я искал, был ли UUID, сгенерированный функцией cakePHP (длиной 32 символа), быстрее по сравнению с автоматическим приращением. Сравнение в обеих вставках и операции выбора. Какой из них я должен использовать UUID, сгенерированный cakePHP или с помощью простого автоинкремента MySQL

Вот пример из практики, который я нашел, но он не специфичен для cakePHP

http://krow.livejournal.com/497839.html

Ответы [ 2 ]

2 голосов
/ 20 октября 2010

Я сомневаюсь, что вы заметите большую часть проблем с производительностью при выборе первичного ключа.Ваши узкие места будут где-то еще, почти гарантировано.

По умолчанию я рекомендую просто использовать первичный ключ с автоинкрементом.Это имеет смысл - вы сразу узнаете, в какие записи заказа были вставлены, так что вы сможете легче их удалить, если тестируете данные и т. Д. Кроме того, проще прочесть число, чем UUID с 32 символами.Таким образом, юзабилити переходит к автоматически увеличенным INT.

Так когда же вы будете использовать UUID?Любая ситуация, когда вы хотите убедиться, что ключ является глобально уникальным (или чертовски близко к нему).Один пример был бы на изолированной базе данных;дб1 и дб2.Вы не можете использовать INT с автоматическим приращением, потому что тогда вы можете получить 2 записи (одну в db1, одну в db2), которые имеют один и тот же первичный ключ, что приведет к кошмарам, если вам когда-нибудь понадобится объединить или перефразировать.Так что это один пример, когда необходимо использовать UUID.

Но, как правило, просто придерживайтесь автоматически увеличенных INT.Это просто делает жизнь лучше.

0 голосов
/ 01 сентября 2012

Всегда лучше поместить эту логику в базу данных, это будет быстрее для вставки и выбора. Потому что, когда MySQL создает PK с автоматическим приращением, то автоматически создает индекс для этого поля и для лучшей производительности помещает его в нужное место на диске. Поэтому, если вы используете сортировку, она будет быстрее с индексированным PK, чем 32 длинных символа.

...