MySQL中的BLOB类型和TEXT类型相关说明

MySQL中BLOB是一个二进制大对象,可以容纳可变数量的数据。有4种BLOB类型:TINYBLOB、BLOB、MEDIUMBLOB和LONGBLOB。它们只是可容纳值的最大长度不同(255k-4G)。 有4种TEXT类型:TINYTEXT、TEXT、MEDIUMTEXT和LONGTEXT。这些对应4种BLOB类型,有相同的最大长度和存储需求。 BLOB 列被视为二进制字符串(字节字符串)。TEXT列被视为非二进制字符串(字符字符串)。BLOB列没有字....
  •   
  • 58
  • mysql
  • 31
  • dodobook
  • 2017/04/06
5

MySQL性能优化的最佳21条经验[转]

今天,数据库的操作越来越成为整个应用的性能瓶颈了,这点对于Web应用尤其明显。关于数据库的性能,这并不只是DBA才需要担心的事,而这更是我们程序员需要去关注的事情。当我们去设计数据库表结构,对操作数据库时(尤其是查表时的SQL语句),我们都需要注意数据操作的性能。这里,我们不会讲过多的SQL语句的优化,而只是针对MySQL这一Web应用最多的数据库。希望下面的这些....
  •   
  • 348
  • mysql
  • 28
  • dodobook
  • 2017/03/14
高性能MySQL

高性能MySQL–MySQL用户工具

MySQL的接口工具可以帮助运行查询,创建表和用户,以及执行其他日常任务。有MySQL Workbench、SQLyog、phpMyAdmin、Adminer. MySQL命令行工具集,例如mysqladmin和mysqlcheck。常用的工具集有:Percona Toolkit、Maatkit and Aspersa、The openark kit、MySQL Workbench 工具集。 SQL的实用集:common_schema、mysql-sr-lib、MySQL UDF仓库、MySQL Forge。 MySQL的监测工具....
  •   
  • 187
  • mysql
  • 26
  • dodobook
  • 2017/03/03

高性能MySQL–备份与恢复

高性能MySQL--备份与恢复 备份非常重要的几个理由:灾难恢复、人们改变想法、审计、测试等。 在规划备份时,有一些性能相关的因素需要考虑。锁时间、备份时间、备份负载、恢复时间。最大的权衡是备份时间与备份负载。 有两种主要的犯法来备份MySQL数据:逻辑备份(也叫导出)和直接复制原始文件的物理备份。逻辑备份将数据包含在一种MySQL能够解析的格式中,要么是SQL(mysqld....
  •   
  • 155
  • mysql
  • 24
  • dodobook
  • 2017/03/03

高性能MySQL–应用层优化

连接池通常不会导致服务器连接过多,因为他们会在进程间排队和共享连接,另一方面,长连接是在每个进程基础上创建,不会再进程间共享。连接池也比共享连接的方式对连接策略有更强的控制力。连接池可以配置为自动扩展,但是通常的实践经验是,当遇到连接池完全占满时,应该讲连接请求进行排队而不是扩展连接池。这样做可以在应用服务器上进行排队等待,而不是将压力传递到My....
  •   
  • 139
  • mysql
  • 26
  • dodobook
  • 2017/03/03
高性能MySQL

高性能MySQL–云端的MySQL

云计算有许多优点,但是很少是为MySQL特别设计。云是一种将基础设施外包出去无须自己管理的方法。云一般是按照即用即付的方式支付。随着供应商发布新的服务和成本降低,云提供的价值越来越大。云能够帮助你轻松地准备好服务器和其他资源。云代表了对基础设施的另一种思考方式。 云天生具备更好的可扩展性。云可以自动改善甚至保证可用时间。云是唯一能提供[这里填入任意的....
  •   
  • 152
  • mysql
  • 28
  • dodobook
  • 2017/03/03
高性能MySQL

高性能MySQL–高可用性

高可用性不是绝对的,只有相对更高的可用性。100%的可用性是不可能达到的。可用性的“9”规则是标识可用性目标最普遍的犯法。你可能也知道,“5个9”表示99.999%的正常可用时间。换句话说,每年允许5分钟的宕机时间。对于大多数应用已经是令人惊叹的数字,尽管还有一些人试图获得更多的“9”。 可以通过同时进行以下两步来获得高可用性。首先,可以尝试避免导致宕机的原因来减少....
  •   
  • 146
  • mysql
  • 29
  • dodobook
  • 2017/03/03

高性能MySQL–可扩展的MySQL

容量是一个和可扩展性相关的概念。系统容量表示在一定的时间内能够完成的工作量,但容量必须是可以有效利用的。系统的最大吞吐量并不等同与容量。大多数基准测试能够衡量一个系统的最大吞吐量,但真实的系统一般不会使用到极限。如果达到最大吞吐量,则性能会下降,并且响应时间会变得不可接受地大且非常不稳定。 向上扩展(有时候也称为垂直扩展)意味着购买更多性能强悍的....
  •   
  • 108
  • mysql
  • 26
  • dodobook
  • 2017/03/03
高性能MySQL

高性能MySQL–主从复制

MySQL内建的复制功能是构建基于MySQL的大规模、高性能应用的基础,这类应用使用所谓的“水平扩展”的架构。我们可以通过为服务器配置一个或多个备库的方式来进行数据的同步。复制功能不仅有利于构建高性能的应用,同事也是高可用、可扩展性、灾难恢复、备份以及数据仓库等工作的基础。 复制解决的基本问题是让一台服务器的数据与其他服务器保持同步。一台主库的数据可以同步....
  •   
  • 132
  • mysql
  • 26
  • dodobook
  • 2017/03/03

高性能MySQL–操作系统和硬件优化

许多不同的硬件都可以影响MySQL的性能,但我们认为最常见的两个瓶颈是CPU和I/O资源。当数据可以放在内存中或者可以从磁盘中以足够快的速度读取时,CPU可能出现瓶颈。另一方I/O瓶颈一般发生在工作所需的数据远远超过有效内存容量的时候。如果有大量的查询和低延迟的要求,瓶颈可能转移到网络上,而不再是磁盘IO。 调优服务器可能有如下两个目标:低延时(快速响应),高吞吐。 ....
  •   
  • 128
  • mysql
  • 27
  • dodobook
  • 2017/03/03

高性能MySQL–优化服务器设置

如果大部分都是InnoDB表,InnoDB缓冲池或许比其他任何东西更需要内存。InnoDB缓冲池并不仅仅缓存索引:它还会缓存行的数据、自适应哈希索引、插入缓冲(Insert Buffer)、锁,以及其他内部数据结构。InnoDB还使用缓冲池来帮助延迟写入,这样就能合并多个写入操作,然后一起顺序地写回。总之InnoDB严重的一来缓冲池,你必须确认为它分配了足够的内存。 随机IO比顺利IO要昂贵得....
  •   
  • 113
  • mysql
  • 30
  • dodobook
  • 2017/03/03

高性能MySQL–MySQL高级特性

分区表是一个独立的逻辑表,是底层多个物理字表组成。有以下的优点和用途场景。1.表非常大以至于无法全部都放在内存中,或者只在表的最后部分有热点数据,其他均是历史数据。分区表的数据更容易维护。分区表的数据可以分布在不同的物理设备上,从而高效的利用多个硬件设备。 分区表本身也有一些限制:1.一个表最多只能有1024个分区。2.如果分区字段中有主键或者唯一索引的....
  •   
  • 122
  • mysql
  • 31
  • dodobook
  • 2017/03/03
高性能MySQL

高性能MySQL–查询性能优化

在尝试编写快速的查询之前,需要清楚一点,真正重要的是响应时间。如果把查询看做是一个任务,那么它由一些列子任务组成,每个子任务都会消耗一定的时间。响应时间是两个部分之和:服务时间和排队时间。服务时间是指数据库处理这个查询真正花了多长时间。 在EXPLAIN语句中的type列反应了访问类型。访问类型有很多种,从全表扫描、索引扫描、范围扫描、唯一索引查询、常数引....
  •   
  • 130
  • mysql
  • 30
  • dodobook
  • 2017/03/03
高性能MySQL

高性能MySQL–创建高性能的索引

索引优化应该是对查询性能优化最有效的手段了。缩影能够轻易将查询性能提高几个数量级。 MySQL中当人们谈论索引的时候,多半说的是B-Tree索引,大多数的MySQL引擎都支持这种索引。B-Tree通常意味着所有的值都是按顺序存储的,并且每一个叶子页到根的距离相同。B-Tree索引能够加快访问数据的速度,因为存储引擎不再需要进行全表扫描来获取需要的数据,取而代之的是从索引的....
  •   
  • 103
  • mysql
  • 31
  • dodobook
  • 2017/03/03

高性能MySQL–Schema与数据类型优化

MySQL支持的数据类型非常多,选择正确的数据类型对于获得高性能至关重要。选择优化的数据类型原则:1.更小的通常更好.2简单就好。3.尽量避免Null值. 整数类型:TINTINT,SMALLINT,MEDIUMINT,INT,BIGINT分别使用8,16,24,32,64位存储空间。它们可以存储的值的范围从-2的(N-1)次方到2的(N-1)次方-1之间。整数类型有可选的UNSIGNED属性,表示不允许负值,这大致可以使整数的上限提....
  •   
  • 99
  • mysql
  • 29
  • dodobook
  • 2017/03/03

高性能MySQL–服务器性能剖析

性能剖析一般有两个步骤:测量任务所花费的时间;然后对结果进行统计和排序,将重要的任务排到前面。无法测量就无法有效的优化。完成一项任务所需要的时候可以分为两部分:执行时间和等待时间。 当一个资源变得效率低下时,应该了解一下为什么会这样。有如下可能的原因:资源被过度使用,余量已经不足以正常工作。资源没有被正确配置。资源已经损坏或者失灵。 我们认为定义....
  •   
  • 136
  • mysql
  • 29
  • dodobook
  • 2017/03/03

高性能MySQL–MySQL基准测试

基准测试(benchmark)是针对系统设计的一种压力测试。基准测试有两种主要的策略:一种是针对整个系统的整体测试,另外是单独测试MySQL。这两种策略也被称为集成式(full-stack)以及单组件式(single-component)基准测试. 基准测试的主要指标有:吞吐量,响应时间或者延迟,并发性,可扩展性。 基准测试的集成式测试工具有:ab(是一个apache HTTP服务器基准测试工具,它可以测试....
  •   
  • 116
  • mysql
  • 33
  • dodobook
  • 2017/03/03
高性能MySQL

高性能MySQL–MySQL架构与历史

无论何时,只要有多个查询需要在同一时刻修改数据,都会产生并发控制的问题。在处理并发读或者写时,可以通过实现一个由两种类型的锁组成的锁系统来解决问题。这两种类型的锁通常被称为共享锁(shared lock)和排它锁(exclusive lock),也叫读锁(read lock)和写锁(write lock).读锁是共享的,或者说是相互不阻塞的。多个客户在同一时刻同时读取同一个资源,而互不干扰。写锁则....
  •   
  • 162
  • mysql
  • 34
  • dodobook
  • 2017/03/03

探索MySQL索引(单表百万)优劣对比主键索引VS普通索引

紧接着上一篇文章关于索引字段的离散度不够大,这次我们来对用户的手机号码做离散索引,关于表结构和内容也详细见前一篇幅。友情链接见该文底部。 这次我们做简易的,也就是只查询一个条件即where phone='****';我们分为三种对比不建任何索引,主键索引,普通索引三种。 //默认情况下,不在phone字段上建索引的情况下 SELECT SQL_NO_CACHE FROM user_list WHERE phone='1867....
  •   
  • 117
  • mysql
  • 32
  • dodobook
  • 2017/03/02
mysql_idx_test

探索MySQL索引(单表百万)优劣对比主键索引,联合索引(顺序)

现在我们有一张简易的用户表,目前有测试数据119万条。今天闲来无事,所以想测试一下WHERE条件中一个字段或者多个字段(排序),之间的多个主键索引联合索引的比较。一切以你自己的环境和数据量为参考。以下情况仅为dodo的个人电脑环境下面的测试。欢迎拍砖和指引。另外此处的为MyISAM的引擎。 //查看一下默认的表结构,主键自增,主键索引,没有其他索引 SHOW CREATE TABLE u....
  •   
  • 276
  • mysql
  • 31
  • dodobook
  • 2017/03/01