Rumah pangkalan data tutorial mysql 高性能MySql进化论(三):ID(标示符)的选择_MySQL

高性能MySql进化论(三):ID(标示符)的选择_MySQL

Jun 01, 2016 pm 01:30 PM
Pengaruh Jadual pangkalan data

bitsCN.com

高性能MySql进化论(三):ID(标示符)的选择

 

在设计数据库表结构的时候,通常情况下每张表结构都有一个字段作为ID,因为 ID会被用来做查询,JOIN,FK等操作,所以ID设计的好坏对性能的影响很大。

 

在为ID选择合适的类型的时候不仅需要考虑这种类型在数据库中存储所占用的空间,还需要考虑该类型在计算或者是值比较时的特性,例如BIT类型存储的时候是二进制的形式,而在数字计算的上下文时,会被转换成对应的十进制形式。

 

对ID进行JOIN操作或者是被用来作为其他表的FK时,涉及的字段类型要保持完全的一致,即使类型都是整数,Unsigned/Signed这样的微小细节也要保持一致,否则在性能方面可能会有意想不到的性能问题,这种问题往往又是难以被发现的。如果使用的Storage Engine 是InnoDB,则可以有效的防止关联字段类型不匹配的问题,如果类型不匹配则会抛出 异常“ERROR 1005 (HY000): Can’t createtable”(VARCHAR(10)和VARCHAR(20)会被认为类型是完全相同的)。

 

创建ID时,要遵守“尽量最小类型原则”(在满足以后需求变化的情况下,要选择占用存储空间最小的类型),例如 有一张存储全国省份的表,对于这张种需求而言,TINYINT比INT更适合作为ID的类型,虽然选用TINYINT只是节省了3个BYTE, 但是在进行JOIN操作或者是作为FK时,性能可能会有很大的提升。

 

实际的应用开发中,ID的类型往往是多样的,例如INT,VARCHAR是比较常用的两种类型,但是有些情况下也可以使用ENUM作为ID的类型,下面的内容分别对这几种类型进行描述

 

整数类型

因为整数类型是一种简单的类型,对比于字符串它的处理更简单速度更快,而且它还支持AUTO_INCREMENT特性,所以一般情况下它是作为ID的首选类型

 

字符串

因为MySQL处理字符串要比整数消耗更多的存储/内存空间,而且速度也相对较慢,所以应该尽量避免使用字符串作为ID的类型。

在无法避免字符串作为ID的类型时,往往会采用“随机值”的策略来生成ID的值,常用的方法包括UUID,MD5, SHA1.在这种情况下需要额外注意,因为随机生成的ID值可能会带来以下三个问题:

         (1)    在执行INSERT语句时意味着索引值会被任意写到索引表的不同位置,这种对于磁盘的随机访问行为,将会导致插入操作的变慢,

         (2)    在执行SELECT操作时,因为逻辑相关的索引也被会被任意写到索引表的不同位置,也会导致查询的变慢。

         (3)    对于数据库提供的CACHE机制而言,这种随机值的策略产生的影响也是比较大的。因为CACHE往往是基于“热区”的原理来实现的,比如说索引表中有100个索引,你执行了多次的查询的结果都是索引表中的20-30这部分的索引,那么 MySQL  Serve为了提高查询效率会把20-30这部分索引的值放到CACHE中,如果你又有一些查询的结果是在30-40 之间的,那么Server会对CACHE进行更新。如果是基于随机的索引,意味着“热区”的区间将会很大,这将导致CACHE的命中率受到影响,而且也会导致CACHE的不断刷新。

如果存储UUID 值,则应该移除“-”符号;或者更好的做法是,用UNHEX() 函数转换UUID 值为16 字节的数字,并且存储在一个BINARY(16) 列中。检索时可以通过HEX()函数来格式化为十六进制格式。

 

枚举

对于ID来说,EMUM 和SET 类型通常是一个糟糕的选择,尽管对某些只包含固定状态或者类型的静态“定义表”来说可能是没有问题的。ENUM 和SET 列适合存储固定信息,例如有序的状态、产品类型、人的性别。没有特殊需求,应该放弃这个选择

 

bitsCN.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

VBOX_E_OBJECT_NOT_FOUND(0x80bb0001)Ralat VirtualBox VBOX_E_OBJECT_NOT_FOUND(0x80bb0001)Ralat VirtualBox Mar 24, 2024 am 09:51 AM

Apabila cuba membuka imej cakera dalam VirtualBox, anda mungkin menghadapi ralat yang menunjukkan bahawa cakera keras tidak boleh didaftarkan. Ini biasanya berlaku apabila fail imej cakera VM yang anda cuba buka mempunyai UUID yang sama seperti fail imej cakera maya yang lain. Dalam kes ini, VirtualBox memaparkan kod ralat VBOX_E_OBJECT_NOT_FOUND(0x80bb0001). Jika anda menghadapi ralat ini, jangan risau, terdapat beberapa penyelesaian yang boleh anda cuba. Mula-mula, anda boleh cuba menggunakan alat baris arahan VirtualBox untuk menukar UUID fail imej cakera, yang akan mengelakkan konflik. Anda boleh menjalankan arahan `VBoxManageinternal

Sejauh manakah keberkesanan menerima panggilan telefon menggunakan mod kapal terbang? Sejauh manakah keberkesanan menerima panggilan telefon menggunakan mod kapal terbang? Feb 20, 2024 am 10:07 AM

Apa yang berlaku apabila seseorang menelefon dalam mod pesawat? Telefon bimbit telah menjadi salah satu alat yang sangat diperlukan dalam kehidupan orang ramai, ia bukan sahaja alat komunikasi, tetapi juga koleksi hiburan, pembelajaran, kerja dan fungsi lain. Dengan peningkatan berterusan dan penambahbaikan fungsi telefon mudah alih, orang ramai menjadi semakin bergantung kepada telefon mudah alih. Dengan kemunculan mod kapal terbang, orang ramai boleh menggunakan telefon mereka dengan lebih mudah semasa penerbangan. Walau bagaimanapun, sesetengah orang bimbang tentang kesan panggilan orang lain dalam mod kapal terbang pada telefon mudah alih atau pengguna? Artikel ini akan menganalisis dan membincangkan dari beberapa aspek. pertama

Bagaimana untuk mematikan fungsi ulasan pada TikTok? Apakah yang berlaku selepas mematikan fungsi ulasan pada TikTok? Bagaimana untuk mematikan fungsi ulasan pada TikTok? Apakah yang berlaku selepas mematikan fungsi ulasan pada TikTok? Mar 23, 2024 pm 06:20 PM

Di platform Douyin, pengguna bukan sahaja boleh berkongsi detik hidup mereka, tetapi juga berinteraksi dengan pengguna lain. Kadangkala fungsi ulasan boleh menyebabkan beberapa pengalaman yang tidak menyenangkan, seperti keganasan dalam talian, komen berniat jahat, dsb. Jadi, bagaimana untuk mematikan fungsi ulasan TikTok? 1. Bagaimana untuk mematikan fungsi komen Douyin? 1. Log masuk ke APP Douyin dan masukkan halaman utama peribadi anda. 2. Klik "I" di penjuru kanan sebelah bawah untuk memasuki menu tetapan. 3. Dalam menu tetapan, cari "Tetapan Privasi". 4. Klik "Tetapan Privasi" untuk memasuki antara muka tetapan privasi. 5. Dalam antara muka tetapan privasi, cari "Tetapan Komen". 6. Klik "Tetapan Komen" untuk memasuki antara muka tetapan ulasan. 7. Dalam antara muka tetapan ulasan, cari pilihan "Tutup Komen". 8. Klik pilihan "Tutup Komen" untuk mengesahkan ulasan penutup

Kerentanan Kemasukan Fail di Jawa dan Kesannya Kerentanan Kemasukan Fail di Jawa dan Kesannya Aug 08, 2023 am 10:30 AM

Java ialah bahasa pengaturcaraan yang biasa digunakan untuk membangunkan pelbagai aplikasi. Walau bagaimanapun, sama seperti bahasa pengaturcaraan lain, Java mempunyai kelemahan dan risiko keselamatan. Salah satu kelemahan yang biasa ialah kerentanan kemasukan fail (FileInclusionVulnerability) Artikel ini akan meneroka prinsip, kesan dan cara mencegah kerentanan ini. Kerentanan kemasukan fail merujuk kepada pengenalan dinamik atau kemasukan fail lain dalam program, tetapi fail yang diperkenalkan tidak disahkan dan dilindungi sepenuhnya, oleh itu

Kesan kekurangan data terhadap latihan model Kesan kekurangan data terhadap latihan model Oct 08, 2023 pm 06:17 PM

Kesan kekurangan data pada latihan model memerlukan contoh kod khusus Dalam bidang pembelajaran mesin dan kecerdasan buatan, data ialah salah satu elemen teras untuk model latihan. Walau bagaimanapun, masalah yang sering kita hadapi dalam realiti adalah kekurangan data. Kekurangan data merujuk kepada jumlah data latihan yang tidak mencukupi atau kekurangan data beranotasi Dalam kes ini, ia akan memberi kesan tertentu pada latihan model. Masalah kekurangan data terutamanya dicerminkan dalam aspek-aspek berikut: Overfitting: Apabila jumlah data latihan tidak mencukupi, model terdedah kepada overfitting. Overfitting merujuk kepada model yang terlalu menyesuaikan diri dengan data latihan.

Apakah masalah yang akan ditimbulkan oleh sektor buruk pada cakera keras? Apakah masalah yang akan ditimbulkan oleh sektor buruk pada cakera keras? Feb 18, 2024 am 10:07 AM

Sektor buruk pada cakera keras merujuk kepada kegagalan fizikal cakera keras, iaitu, unit storan pada cakera keras tidak boleh membaca atau menulis data secara normal. Kesan sektor buruk pada cakera keras adalah sangat ketara, dan ia boleh menyebabkan kehilangan data, ranap sistem dan prestasi cakera keras yang berkurangan. Artikel ini akan memperkenalkan secara terperinci kesan sektor buruk cakera keras dan penyelesaian yang berkaitan. Pertama, sektor buruk pada cakera keras boleh menyebabkan kehilangan data. Apabila sektor dalam cakera keras mempunyai sektor buruk, data pada sektor itu tidak boleh dibaca, mengakibatkan kerosakan fail atau tidak boleh diakses. Keadaan ini amat serius jika fail penting disimpan dalam sektor di mana sektor buruk berada.

Apakah kesan khusus kad lombong terhadap permainan? Apakah kesan khusus kad lombong terhadap permainan? Jan 03, 2024 am 09:05 AM

Sesetengah pengguna mungkin mempertimbangkan untuk membeli kad perlombongan demi harga yang murah. Apakah kesan penggunaan kad mining untuk bermain permainan: 1. Kestabilan bermain permainan dengan kad mining tidak dapat dijamin, kerana hayat kad mining adalah sangat singkat dan berkemungkinan menjadi tidak berguna selepas bermain sahaja. 2. Kad perlombongan pada asasnya adalah versi yang dikebiri daripada versi asal Disebabkan haus dan lusuh jangka panjang, prestasi dalam semua aspek mungkin lemah. 3. Dengan cara ini, pengguna mungkin tidak dapat memaparkan semua kesan permainan semasa bermain permainan. 4. Lebih-lebih lagi, komponen elektronik kad grafik akan menua lebih awal, apatah lagi bermain permainan juga memakan kad grafik, jadi ia telah dikeringkan ke tahap yang lebih besar, jadi impak kepada permainan adalah hebat. 5. Secara umumnya, gunakan kad mining untuk bermain permainan

Apakah kesan kebocoran casis pada komputer? Apakah kesan kebocoran casis pada komputer? Feb 22, 2024 pm 06:48 PM

Apakah kesan kebocoran casis terhadap komputer? Dengan kemajuan teknologi yang berterusan, komputer secara beransur-ansur menjadi alat yang sangat diperlukan dalam kehidupan orang ramai, sama ada bekerja, belajar atau hiburan, ia tidak dapat dipisahkan daripada penggunaan komputer. Walau bagaimanapun, sementara kita menikmati kemudahan yang dibawa oleh komputer, kita juga perlu memberi perhatian kepada keselamatannya. Kebocoran kes adalah masalah yang berpotensi yang, jika tidak ditangani tepat pada masanya, mungkin mempunyai kesan serius pada komputer dan pengguna. Pertama sekali, kebocoran casis akan menyebabkan kerosakan pada perkakasan komputer. Papan induk komputer, bekalan kuasa, litar dalaman dan komponen lain semuanya berada di dalam casis

See all articles