
Mysql高性能学习
文章平均质量分 76
记录《高性能Mysql》的学习历程
geek-wmy
一位专注的码农
展开
-
16、Mysql用户工具
接口工具Mysql WorkbenchSQLyogphpMyAdminAdminer命令行工具集Percona ToolkitMaatkit and AspersaThe openark kitMysql Workbench工具集SQL实用集common_schemamysql-sr-libMysql UDF库Mysql Forge监测工具开源的监控工具NagiosZabbixZenossHyperic HQOpenNMSGroundwork Open Sourc原创 2024-01-02 21:08:57 · 426 阅读 · 0 评论 -
15、备份与恢复
备份在先,只有已经做了备份才可能恢复。备份由脚本和任务自动完成。备份是日常任务,但是恢复常常发生在危急情况下。因为安全的需要,如果正在做异地备份,可能需要对备份数据进行加密或采取其他措施来保护。只有一个人来规划、设计和实施备份。规划备份和恢复策略时,有两个重要的需求可以帮忙思考:恢复点目标和恢复时间目标。他们定义了可以容忍丢失多少数据,以及需要等待多久将数据恢复。原创 2024-01-02 21:02:30 · 1111 阅读 · 0 评论 -
14、应用层优化
缓存对高负载应用来说是至关重要的,一个典型的Web应用程序会提供大量的内容,直接生成这些内容的成本比采用缓存要高得多,所以采用缓存通常可以获得数量级的性能提升。因为应用可以缓存部分计算结果,所以应用层缓存可能比更低层次的缓存更有效。在更改旧数据时,为了避免要同时失效派生出来的脏数据,可以在缓存中保存一些信息,当从缓存中读数据时可以利用这些信息判断数据是否已经失效。最常见的问题是保持他的进程的存活时间过长,或者在各种不同的用途下混合使用,而不是分别对不同类型的工作进行优化。原创 2024-01-01 16:52:53 · 486 阅读 · 0 评论 -
13、云端的Mysql
Mysql并不会在云端自动变得更具扩展性。事实上,如果机器的性能较差,会导致过早使用横向扩展策略。况且云托管服务相比专用的硬件可靠性和可预测性要更差写,所以想在云端获得高可用性需要更多的创新。在一些场景下云托管比传统的服务器部署方式更经济。云托管比较适合处于初级阶段的企业,或者那些持续接触新概念并且本质上是以适用为主的企业。由于较差的CPU、内存以及IO性能。在类似AWS这样的云托管平台上Mysql表现出来的性能并不如在其他地方好。Mysql需要四种基础资源来完成工作:CPU周期、内存、IO,以及网络。原创 2024-01-01 15:25:05 · 396 阅读 · 0 评论 -
12、高可用性
高可用性不是绝对的,只有相对更高的可用性。百分之百的可用性是不可能达到的。可用性的定义不仅仅包括服务正在运行的时间段,还包括应用是否能以足够好的性能处理请求。原创 2024-01-01 15:14:46 · 767 阅读 · 0 评论 -
11、可扩展的Mysql
另一种说法,可扩展性是当增加资源以处理负载和增加容量时系统能够获得的投资产出率。原创 2023-12-30 17:29:52 · 446 阅读 · 0 评论 -
10、复制
如果没有在 my.cnf 里定义服务器ID,可以通过 CHANGE MASTER TO来设置备库。但是却无法启动复制。必须为备库显示的设置服务器ID。原创 2023-12-30 14:51:51 · 1120 阅读 · 0 评论 -
9、操作系统和硬件优化
许多不同的硬件都会影响Mysql的性能,最常见的两个瓶颈是CPU和IO资源。当数据可以放在内存中或者可以从磁盘中以足够快的速度读取时,CPU可能出现瓶颈。IO瓶颈一般发生在所需要的数据远远超过有效内存容量的时候。如果应用程序是分布在网络上,或者如果有大量的查询和低延迟的要求,瓶颈可能转移到网络上,而不再是磁盘IO。原创 2023-12-24 20:25:32 · 436 阅读 · 0 评论 -
8、优化服务器设置
首先我们应该知道的是Mysql从哪里获取配置信息:命令行参数和配置文件。如果打算长期使用某些配置那么就应该写到全局配置文件,而不是在命令行指定。原创 2023-12-23 21:54:38 · 1016 阅读 · 0 评论 -
7、Mysql高级特性
分区表是一个独立的逻辑表,但是底层由多个物理子表组成。实现分区的代码实际上是对一组底层表的句柄对象的封装。对分区表的请求,都会通过句柄对象转化成对存储引擎的接口调用。Mysql实现分区表的方式是对底层表的封装,意味着索引也是按照分区的子表定义的,而没有全局索引。Mysql在创建表时使用 PARTITION BY 子句定义每个分区存放的数据,在执行查询的时候,优化器会根据分区定义过滤那些没有我们需要数据的分区,这样查询就无须扫描所有分区。分区的一个主要目的是将数据按照一个较粗的粒度分在不同的表中。原创 2023-12-17 21:33:43 · 130 阅读 · 0 评论 -
6、查询性能优化
在编写快速查询之前,需要清楚一点,真正重要的是响应时间。如果把查询看作是一个任务,那么他由一系列子任务组成,每个子任务都会消耗一定的时间。如果要优化查询,实际上要优化其子任务,要么消除其中一些子任务,要么减少子任务的执行次数,要么让子任务运行的更快。查询性能低下最基本的原因是访问的数据太多。某些查询不可避免地需要筛选大量数据,但这并不常见。大部分性能低下的查询都可以通过减少访问的数据量的方式进行优化。对于低效的查询,我们发现可以通过下面两个步骤来分析:有些查询会请求超过实际需要的数据,然后这些多余的数据会被原创 2023-12-16 20:27:29 · 599 阅读 · 0 评论 -
5、创建高性能的索引
单行访问时很慢的。如果服务器从存储中读取一个数据块只是为了获取其中一行,那么就浪费了很多工作。最好读取的块中能包含尽可能多所需要的行。按顺序访问范围数据是很快的。第一,顺序IO不需要多次磁盘寻道,所以比随机IO要快很多;第二,如果服务器能够按需要顺序读取数据,那么就不再需要额外的排序操作,并且GROUP BY查询也无须再做排序和将行按组聚合计算了。索引覆盖查询是很快的,避免了回表查找。原创 2023-12-10 16:24:33 · 545 阅读 · 0 评论 -
4、Schema与数据类型优化
良好的逻辑设计和物理设计是高性能的基石,应该根据系统将要执行的查询语句来设计schema,这往往需要权衡各种因素。例如,反范式的设计可以加快某些类型的查询,但同时可能使另一些类型的查询变慢。比如添加计数表和汇总表时一种很好的优化查询的方式,但这些表的维护成本很高。原创 2023-12-03 20:34:49 · 347 阅读 · 0 评论 -
3、服务器性能剖析
*我们将性能定义为完成某件任务所需要的时间度量,换句话说,性能即响应时间,这是一个非常重要的原则。**我们通过任务和时间而不是资源来测量性能。数据库服务器的目的是执行sql语句,所以他关注的任务是查询或者语句,如SELECT、UPDATE、DELETE等。数据库服务器的性能用查询的响应时间来度量。单位是每个查询花费的时间。假如你认为性能优化是降低CPU利用率,那么可以减少对资源的使用。但是资源是用来消耗并用来工作的,所以有时候消耗更多的资源能够加快查询速度。原创 2023-12-02 19:43:41 · 276 阅读 · 0 评论 -
2、Mysql基准测试
准测试是针对系统设计的一种压力测试。通常的目标是为了掌握系统的行为。原创 2023-11-26 10:38:48 · 288 阅读 · 0 评论 -
1、Mysql架构与历史
所谓幻读就是说当某个事务在读取某个范围内的记录时,另一个事务又在该范围内插入了新的记录,当之前的事务再次读取该范围内的记录时,会产生幻行。MVCC是如何操作的。事务日志可以帮助提高事务的效率,使用事务日志,存储引擎在修改表的数据时只需要修改其内存拷贝,再把该修改行为记录到持久化的事务日志中,而不用每次都将修改的数据本身持久化到磁盘。写锁则是排他的,也就是说一个写锁会阻塞其他的写锁和读锁,这是处于安全策略的考虑,只有这样,才能确保在给定的时间内,只有一个用户能执行写入,并防止其他用户读取正在写入的同一资源。原创 2023-11-25 21:08:43 · 269 阅读 · 0 评论