Heim Datenbank MySQL-Tutorial mysql性能tip(1)_MySQL

mysql性能tip(1)_MySQL

Jun 01, 2016 pm 01:44 PM
字符串 verwenden

bitsCN.com

数据类型选择方面的几个原则:

 

1,更小通常更好,选择能正确表示数据的最小类型。

 

2,简单就好,用简单类型优于用复杂类型。

 

3,避免NULL,尽量定义字段为not null。性能提升很小。

 

 

 

字符串的选型:

 

当最大长度远远大于平均长度时,并很少发生更新时,选择VARCHAR。

 

CHAR适合保存用户密码的MD5哈希值。

 

MySql存储的最小时间单位是秒,但是可以用毫秒进行临时计算。

 

 

 

InnoDB有一个特别功能叫做自适应哈希索引,当InnoDB注意到一些索引值被很频繁的访问的时候,它就会在BTree的顶端为这些值建立内存索引。

 

 

 

索引包含了来自于表中的一列或者多列的值,如果索引了多列数据,列的顺序非常重要,因为Mysql只能高效的搜索所以你的最左前缀。

 

 

 

聚集索引:不是一种单独的索引类型,而是一种存储数据的方式。当表有聚集索引的时候,它的数据行实际保存在索引的叶子页中。每个表只能有一个聚集索引。

 

使用时注意设置前缀索引。索引选择要注意不重复的索引值。

 

 

 

索引策略总结:

 

检查最常用的查询,不要不调查就随便建索引。为了找到建索引的平衡,应该测试和剖析。第一检查的就是响应时间,要为耗时很长的查询添加索引;然后就是检查导致最大负载的查询,添加索引;最好要把系统的cpu、内存和磁盘瓶颈考虑进去。

 

在任何可能的地方,都要试着扩展索引,而不是新增索引。通常维护一个多列索引要比维护多个单列索引容易。如果不知道查询的分布,就要尽可能的使索引变得更有选择性,因为高选择性的索引通常更有好处。

 

 

 

在冗余方面:

 

通常需要额外的索引、冗余的字段,或者甚至缓存表和汇总表来加速读取。这为写入查询和维护工作增加了工作量,但这仍然是设计高性能查询的常见技巧:用极大的加速读取来弥补较慢的写入的代价。(但是也为读写增加了开发复杂性)

 

 

 

InnoDB存储引擎的一些tip:

 

 

事务性:支持事务和四种事务隔离级别。

 

外键:在Mysql 5.0中唯一的支持外键的存储引擎。

 

行级锁:锁设定于行一级,不会向上传递并且也不会阻塞选择——标准选择根本不会设定任何锁,有很好的并发特性。

 

多版本:InnoDB使用多版本并发控制,默认情况下不会选择读取陈旧数据。

 

按主键聚集:所有InnoDB表都是按主键聚集的。

 

所有索引包含主键列:索引按照主键引用行,因此,如果不把主键维持的很短,索引就会很大。

 

优化的缓存:InnoDB把数据和内存缓存在缓冲区池里。会自动构建哈希索引来加快行读取。

 

未压缩的索引:索引没有使用前缀压缩,因此可能会比MyISAM表的索引大很多。

 

数据装载缓慢:在MySql5.0中,InnoDB不会特别优化数据加载。它一次构建一行的索引,而不是按照排序进行构建。导致加载缓慢。

 

阻塞AUTO_INCREMENT:在MySql5.1之前的版本,InnoDB使用了表级锁来产生每个新的auto_increment值。

 

没有缓存的count(*)值:和MyISAM表或Memory表不同,InnoDB表不会把表的行数保存在表中,这意味着没有where子句的count(*)查询不会被优化掉,并且需要全表或索引扫描。

 

 

查询优化:

 

在下面的应用场景中,在应用程序端进行联接效率更高:可以缓存早期查询的大量数据;使用了多个MyISAM表;数据分布在不同的服务器上;对于大表使用in()替换联接;一个联接引用了同一个表很多次。

 

 

 

查询缓存:Mysql对查询缓存的实现就是将查询文本作为key,将结果集作为value的一个map。因此,查询语句的任何一点变化都会导致缓存不命中,书写一致的查询语句就成了mysql操作的要点。另外就是查询缓存不缓存任何包含不确定函数的查询,比如NOW()。换句话说,用户自定义的函数,变量等等都不会被缓存。(原理是这样的,服务器会执行一次不区分大小写的检查来验证查询是否以SEL打头)。另外值得说明的是,结果太大也不会被缓存的。建立缓存也是有开销的,比如内存分配等,开启了缓存后查询就会检查,这也是性能开销,因此开启与否要根据情况仔细斟酌

 

摘自 Change Dir

bitsCN.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Detaillierte Erläuterung der Methode zum Konvertieren des Typs „int' in „string' in PHP Detaillierte Erläuterung der Methode zum Konvertieren des Typs „int' in „string' in PHP Mar 26, 2024 am 11:45 AM

Ausführliche Erläuterung der Methode zum Konvertieren des Typs int in einen String in PHP. Bei der PHP-Entwicklung stoßen wir häufig auf die Notwendigkeit, den Typ int in einen String-Typ zu konvertieren. Diese Konvertierung kann auf verschiedene Weise erreicht werden. In diesem Artikel werden verschiedene gängige Methoden im Detail vorgestellt, mit spezifischen Codebeispielen, um den Lesern das Verständnis zu erleichtern. 1. Verwenden Sie die integrierte Funktion strval() von PHP. PHP bietet eine integrierte Funktion strval(), die Variablen verschiedener Typen in String-Typen konvertieren kann. Wenn wir den Typ int in den Typ string konvertieren müssen,

Wie kann man in Golang überprüfen, ob eine Zeichenfolge mit einem bestimmten Zeichen beginnt? Wie kann man in Golang überprüfen, ob eine Zeichenfolge mit einem bestimmten Zeichen beginnt? Mar 12, 2024 pm 09:42 PM

Wie kann man in Golang überprüfen, ob eine Zeichenfolge mit einem bestimmten Zeichen beginnt? Beim Programmieren in Golang kommt es häufig vor, dass Sie prüfen müssen, ob eine Zeichenfolge mit einem bestimmten Zeichen beginnt. Um diese Anforderung zu erfüllen, können wir die vom Strings-Paket in Golang bereitgestellten Funktionen verwenden, um dies zu erreichen. Als Nächstes stellen wir anhand spezifischer Codebeispiele ausführlich vor, wie Sie mit Golang überprüfen können, ob eine Zeichenfolge mit einem bestimmten Zeichen beginnt. In Golang können wir HasPrefix aus dem Strings-Paket verwenden

So ermitteln Sie, ob eine Golang-Zeichenfolge mit einem bestimmten Zeichen endet So ermitteln Sie, ob eine Golang-Zeichenfolge mit einem bestimmten Zeichen endet Mar 12, 2024 pm 04:48 PM

Titel: So ermitteln Sie, ob eine Zeichenfolge in Golang mit einem bestimmten Zeichen endet. In der Go-Sprache müssen wir manchmal feststellen, ob eine Zeichenfolge mit einem bestimmten Zeichen endet. In diesem Artikel wird erläutert, wie Sie diese Funktion mithilfe der Go-Sprache implementieren, und es werden Codebeispiele als Referenz bereitgestellt. Schauen wir uns zunächst an, wie Sie in Golang feststellen können, ob eine Zeichenfolge mit einem bestimmten Zeichen endet. Die Zeichen in einer Zeichenfolge in Golang können durch Indizierung ermittelt werden, und die Länge der Zeichenfolge kann ermittelt werden

So wiederholen Sie eine Zeichenfolge in Python_Tutorial zum Wiederholen von Zeichenfolgen in Python So wiederholen Sie eine Zeichenfolge in Python_Tutorial zum Wiederholen von Zeichenfolgen in Python Apr 02, 2024 pm 03:58 PM

1. Öffnen Sie zuerst Pycharm und rufen Sie die Pycharm-Homepage auf. 2. Erstellen Sie dann ein neues Python-Skript, klicken Sie mit der rechten Maustaste – klicken Sie auf „Neu“ – klicken Sie auf „Pythondatei“. 3. Geben Sie eine Zeichenfolge ein, Code: s="-". 4. Dann müssen Sie die Symbole in der Zeichenfolge 20 Mal wiederholen, Code: s1=s*20 5. Geben Sie den Druckausgabecode ein, Code: print(s1). 6. Führen Sie abschließend das Skript aus und Sie sehen unten unseren Rückgabewert: - 20 Mal wiederholt.

So lösen Sie das Problem verstümmelter chinesischer Zeichen bei der Konvertierung von Hexadezimalzahlen in Zeichenfolgen in PHP So lösen Sie das Problem verstümmelter chinesischer Zeichen bei der Konvertierung von Hexadezimalzahlen in Zeichenfolgen in PHP Mar 04, 2024 am 09:36 AM

Methoden zur Lösung des Problems verstümmelter chinesischer Zeichen beim Konvertieren von Hexadezimalzeichenfolgen in PHP. Bei der PHP-Programmierung stoßen wir manchmal auf Situationen, in denen wir Hexadezimalzeichenfolgen in normale chinesische Zeichen konvertieren müssen. Bei dieser Konvertierung treten jedoch manchmal Probleme mit verstümmelten chinesischen Zeichen auf. In diesem Artikel finden Sie eine Methode zur Lösung des Problems verstümmelter chinesischer Zeichen bei der Konvertierung von Hexadezimalzahlen in Zeichenfolgen in PHP sowie spezifische Codebeispiele. Verwenden Sie die Funktion hex2bin() für die Hexadezimalkonvertierung. Die in PHP integrierte Funktion hex2bin() kann 1 konvertieren

Tipps zum PHP-String-Matching: Vermeiden Sie mehrdeutige eingeschlossene Ausdrücke Tipps zum PHP-String-Matching: Vermeiden Sie mehrdeutige eingeschlossene Ausdrücke Feb 29, 2024 am 08:06 AM

Tipps zum PHP-String-Matching: Vermeiden Sie mehrdeutige eingeschlossene Ausdrücke. In der PHP-Entwicklung ist der String-Matching eine häufige Aufgabe, die normalerweise verwendet wird, um bestimmte Textinhalte zu finden oder das Eingabeformat zu überprüfen. Manchmal müssen wir jedoch die Verwendung mehrdeutiger Einschlussausdrücke vermeiden, um die Übereinstimmungsgenauigkeit sicherzustellen. In diesem Artikel werden einige Techniken zur Vermeidung mehrdeutiger Einschlussausdrücke beim String-Matching in PHP vorgestellt und spezifische Codebeispiele bereitgestellt. Verwenden Sie die Funktion preg_match() für den exakten Abgleich. In PHP können Sie preg_mat verwenden

PHP-String-Manipulation: eine praktische Möglichkeit, Leerzeichen effektiv zu entfernen PHP-String-Manipulation: eine praktische Möglichkeit, Leerzeichen effektiv zu entfernen Mar 24, 2024 am 11:45 AM

PHP-String-Operation: Eine praktische Methode zum effektiven Entfernen von Leerzeichen Bei der PHP-Entwicklung kommt es häufig vor, dass Sie Leerzeichen aus einem String entfernen müssen. Das Entfernen von Leerzeichen kann die Zeichenfolge sauberer machen und die nachfolgende Datenverarbeitung und -anzeige erleichtern. In diesem Artikel werden mehrere effektive und praktische Methoden zum Entfernen von Leerzeichen vorgestellt und spezifische Codebeispiele angehängt. Methode 1: Verwenden Sie die in PHP integrierte Funktion trim(). Die in PHP integrierte Funktion trim() kann Leerzeichen an beiden Enden der Zeichenfolge entfernen (einschließlich Leerzeichen, Tabulatoren, Zeilenumbrüche usw.), was sehr praktisch und einfach ist benutzen.

PHP-Techniken zum Löschen der letzten beiden Zeichen einer Zeichenfolge PHP-Techniken zum Löschen der letzten beiden Zeichen einer Zeichenfolge Mar 23, 2024 pm 12:18 PM

Als Skriptsprache, die häufig bei der Entwicklung von Webanwendungen verwendet wird, verfügt PHP über sehr leistungsstarke Funktionen zur Zeichenfolgenverarbeitung. In der täglichen Entwicklung stoßen wir häufig auf Vorgänge, bei denen eine Zeichenfolge gelöscht werden muss, insbesondere die letzten beiden Zeichen der Zeichenfolge. In diesem Artikel werden zwei PHP-Techniken zum Löschen der letzten beiden Zeichen einer Zeichenfolge vorgestellt und spezifische Codebeispiele bereitgestellt. Tipp 1: Verwenden Sie die Substr-Funktion Die Substr-Funktion in PHP wird verwendet, um einen Teil eines Strings zurückzugeben. Wir können Zeichen leicht entfernen, indem wir die Zeichenfolge und die Startposition angeben

See all articles