数据库_性能优化篇-2

合集下载

数据库性能优化方法

数据库性能优化方法

数据库性能优化方法
1. 使用索引:使用合适的索引可以提高数据库的查询速度。

根据查询的字段和查询条件来选择合适的索引类型和列,可以有效减少数据的读取和过滤时间。

2. 避免全表扫描:尽量避免对整个表进行扫描,可以通过使用索引、加入合适的查询条件和优化查询语句等方法来避免。

3. 正确使用事务:事务的正确使用可以提高数据库的并发处理能力,避免锁的竞争和冲突。

4. 分区和分表:对于大型数据库或者数据量较大的表,可以考虑进行分区或者分表,将数据存储在多个物理文件中,提高查询和插入的效率。

5. 数据库缓存:使用缓存技术可以将常用的数据存储在内存中,避免频繁的磁盘读写,提高访问速度。

6. 优化查询语句:对于复杂的查询语句,可以通过优化语句的结构、使用合适的操作符和函数等方法,减少查询的时间和资源消耗。

7. 避免多次连接和断开连接:数据库连接是一种资源消耗较大的操作,应尽量避免频繁的连接和断开操作。

8. 合理设计数据库结构:合理设计数据库表的结构和关系,尽量避免冗余和重复数据的存储,可以节省存储空间和提高查询效率。

9. 使用合适的数据类型:选择合适的数据类型可以节省存储空间,减少磁盘读写的时间。

10. 定期清理和优化数据库:定期清理无用的数据和优化数据库的结构可以提高数据库的性能,减少查询和写入的时间。

数据库查询性能优化的关键指标与性能调整方法总结

数据库查询性能优化的关键指标与性能调整方法总结

数据库查询性能优化的关键指标与性能调整方法总结数据库是现代应用中关键的数据存储和操作引擎,而数据库查询性能则是保障业务运转高效的关键。

本文将分析数据库查询性能优化的关键指标和性能调整方法,以帮助读者理解并改善数据库查询性能问题。

一、关键指标1. 响应时间:即数据库查询的耗时。

响应时间是用户获得查询结果所需的时间,需要尽量缩短以提高用户体验和整体系统性能。

2. 并发性能:并发性能衡量数据库系统同时处理多个查询请求的能力。

较高的并发性能可同时响应大量查询请求,提供更好的用户体验。

3. 吞吐量:吞吐量是指在一定时间内数据库能处理的查询请求数量。

较高的吞吐量代表数据库的工作效率较高。

4. 资源占用:数据库执行查询所需的系统资源,包括 CPU、内存和磁盘IO 等。

合理利用资源是优化查询性能的关键。

5. 索引命中率:索引命中率即查询时需要的数据是否命中索引进行快速查找。

较高的索引命中率提高了查询速度。

二、性能调整方法1. 优化 SQL 查询语句SQL 查询语句是数据库查询性能优化的重点。

以下是一些常见的 SQL 优化方法:- 使用合适的索引:为经常被查询的字段创建索引可以大大提高查询速度。

但要避免过多的索引,以减少更新操作的性能损耗。

- 优化查询逻辑:设计简洁、高效的查询逻辑,避免不必要的嵌套查询和子查询。

使用更简单的 JOIN 语句替代子查询。

- 调整查询顺序:按照条件的选择性从高到低的顺序进行查询,可以尽早过滤出不满足条件的记录,从而提高查询效率。

- 避免使用 SELECT *:只选择需要的字段,避免查询过多无用的字段,以减少数据传输和处理的负担。

2. 适当增加缓存缓存是提高数据库查询性能的常用方法。

通过将查询结果存储在缓存中,可以减少对数据库的查询次数,从而提高查询性能。

- 查询缓存:数据库的查询缓存可以存储查询结果,当相同查询再次发起时,直接从缓存中获取结果。

但要注意缓存过期时间和频繁更新的表。

- 缓存中间层:可以引入内存数据库、缓存服务器等中间层,将热门数据缓存在内存中,以提高查询速度。

数据库技术的最佳实践和性能优化

数据库技术的最佳实践和性能优化

数据库技术的最佳实践和性能优化随着互联网和大数据时代的到来,数据库已经成为了数据存储和管理的重要组成部分。

数据库技术也在不断的发展和进步,出现了越来越多先进的数据库技术,如NoSQL、分布式数据库等。

数据库的性能优化与最佳实践是数据库管理的重要领域,在本文中,我们将探讨如何实现数据库的最佳实践与性能优化。

1. 数据库的最佳实践数据库最佳实践的目标是将数据存储在数据库中,使其轻松可访问、安全可靠、且能够扩展。

下面是一些实现数据库最佳实践的方法:1.1. 数据库设计和规划在部署数据库之前,首先需要对数据库进行设计和规划。

数据库设计应注重以下方面:- 数据库模型:数据库模型应该与应用程序一起设计。

使用统一的模型,可以简化数据存储和数据访问的过程,提高数据的有效性和一致性。

- 数据库命名规则:采用规范命名规则,可以提高数据的可读性和维护性。

命名规则应体现数据的含义,同时也要简洁明了。

- 数据库索引:根据数据的查询需求,建立合适的数据库索引,可以提高数据的查询效率。

1.2. 数据库安全- 数据库与网络的安全:要确保数据库服务器和网络都是安全的。

数据库服务器应该安装在安全的物理环境中,网络应该采用安全协议来保护数据的传输。

- 数据库访问控制:要对数据库的访问进行控制,设置密码、访问权限等措施,以防止未经授权的数据访问。

1.3. 数据库备份和恢复为了保护数据不丢失,在正式的使用之前,应该定期备份数据库,并尽可能做好恢复准备工作,以防止数据的丢失。

2. 数据库的性能优化数据库性能优化的目标是提高数据库的查询效率和响应速度,以满足业务需求,并提高数据库的可扩展性,以适应业务的发展。

下面是一些实现数据库性能优化的方法:2.1. 优化数据库查询- 在查询中使用索引:索引是提高查询效率的关键。

应该根据业务需求,建立合适的索引,以满足业务的查询需求。

- 避免使用SELECT *语句:SELECT *语句会读取所有字段,造成数据库的性能浪费。

数据库性能优化与调优方法

数据库性能优化与调优方法

数据库性能优化与调优方法第一章:数据库性能评估数据库性能评估是优化和调优的第一步。

评估过程应包括以下内容:1.确定性能指标:对于不同类型的应用,性能指标有所不同。

例如,对于在线事务处理(OLTP)系统,关注的重点可能是吞吐量和响应时间,而对于在线分析处理(OLAP)系统,关注的重点可能是查询性能和数据加载时间。

2.收集统计信息:收集数据库的统计信息,例如表的大小、索引使用情况、查询频率等。

这些统计信息对于后续的优化和调优将非常有帮助。

3.基准测试:使用模拟负载或真实负载对数据库进行测试,以了解其当前性能水平并识别瓶颈。

第二章:物理设计优化物理设计是数据库优化的关键一环。

以下是一些常见的物理设计优化方法:1.合理使用索引:根据查询的频率和需求,选择合适的字段创建索引。

同时,避免创建过多的索引,因为索引会增加写操作的开销。

2.优化表结构:减少表的冗余和复杂性,合理划分表空间,将表和索引分布在不同的物理磁盘上,以提高读写性能。

3.分区表:将大型表按某个条件分隔为多个较小的分区,可以提高查询性能和批量加载的速度。

第三章:查询优化查询是数据库中最常见和频繁的操作,因此查询优化是性能优化的关键。

以下是一些常见的查询优化方法:1.优化SQL语句:使用合适的查询语句和条件,避免使用不必要的JOIN操作,使用子查询替代重复查询等。

2.使用视图和存储过程:将复杂的查询封装为视图或存储过程,以减少数据传输和减轻服务器的负载。

3.重建索引:定期对表的索引进行重建和优化,以减少查询的时间。

第四章:缓存和分布式处理缓存和分布式处理可以进一步提高数据库性能。

以下是一些常见的缓存和分布式处理方法:1.使用缓存:将常用的查询结果或热数据缓存在内存中,以减少数据库访问次数。

可以使用缓存服务器、内存数据库或NoSQL数据库等实现。

2.分布式处理:将数据库分布在多个节点上,通过水平扩展来增加吞吐量和负载均衡,并减少单个节点故障对整个系统的影响。

数据库系统中读写操作的性能优化与分析

数据库系统中读写操作的性能优化与分析

数据库系统中读写操作的性能优化与分析在数据库系统中,读写操作的性能优化是至关重要的,它直接影响了系统的响应速度和用户体验。

本文将探讨数据库系统中读写操作的性能优化方法和分析技术,以帮助开发人员和管理员提升系统的性能。

一、读操作的性能优化1.合理设计查询语句:查询语句的设计是提升读操作性能的关键。

避免使用Select *,而是明确指定所需的列名,减小数据量。

对于复杂查询,可以使用联合查询来减少数据库的访问次数。

2.创建合适的索引:索引能够加速读取操作,提升查询效率。

根据查询的常见字段、排序和筛选条件,选取合适的列创建索引。

然而,过多的索引也会带来性能损耗,因此需要权衡索引的数量和选择。

3.使用缓存技术:将热点数据缓存在内存中可以大幅提升读操作的性能。

常用的缓存技术包括Redis和Memcached,它们能够提供快速的键值对存储和读取服务,减少对数据库的访问。

4.合理配置硬件资源:数据库服务器的硬件配置对读操作有直接影响。

增加内存可以提升缓存效果,使用SSD硬盘可以减少IO延迟。

此外,合理调整并发连接数和线程池大小也能够提高读取操作的处理能力。

5.优化数据库表结构:设计数据库表中的字段类型和关系,以充分利用数据库的优化功能。

避免使用过多的大字段,将数据划分到多个表中,减小表的行数和列数等都可以提升读取操作的性能。

二、写操作的性能优化1.批量写入:通过批量插入或更新数据的方式,减少对数据库的频繁写入操作,从而降低写操作的负载。

批量写入可以采用事务来保证数据的一致性,提高写操作的效率。

2.合理使用缓存:对于具有更新频率较高但又不严格要求实时的数据,可以使用缓存技术进行更新。

例如,可以使用Redis作为缓存数据库,将写入操作先缓存到Redis中,然后定期批量写入到实际数据库中。

3.队列技术:利用消息队列的方式来进行写入操作,将写入请求发送到消息队列中,由后台异步处理。

这样可以降低写操作对用户请求的响应时间,提升系统的并发处理能力。

数据库性能优化报告

数据库性能优化报告

数据库性能优化报告一、引言在当今数字化时代,数据库作为信息存储和管理的核心组件,其性能直接影响着业务系统的运行效率和用户体验。

随着数据量的不断增长和业务需求的日益复杂,数据库性能优化成为了企业信息化建设中的关键任务之一。

本报告旨在对数据库性能优化进行全面的分析和总结,为相关技术人员提供参考和指导。

二、数据库性能优化的重要性数据库性能的优劣直接关系到系统的响应时间、吞吐量、资源利用率等关键指标。

一个性能良好的数据库能够快速处理大量的并发请求,提供准确和及时的数据服务,从而提升用户满意度,增强企业的竞争力。

相反,性能不佳的数据库可能导致系统卡顿、数据延迟、甚至业务中断,给企业带来巨大的损失。

三、影响数据库性能的因素(一)硬件资源服务器的 CPU 性能、内存容量、存储设备的读写速度等硬件因素直接影响数据库的运行效率。

(二)数据库设计不合理的表结构设计、索引缺失或不当、数据冗余等问题会导致查询效率低下。

(三)数据量和增长速度大量的数据以及快速的数据增长可能超出数据库的处理能力,需要采取有效的数据管理策略。

(四)查询语句优化复杂、低效的查询语句会消耗大量的系统资源,影响数据库性能。

(五)并发访问高并发的访问请求可能导致数据库锁竞争、资源争用等问题。

(六)数据库配置参数不正确的数据库配置参数,如缓冲区大小、连接数限制等,可能影响数据库的性能表现。

四、数据库性能优化的方法和策略(一)硬件优化1、选择高性能的服务器,确保 CPU 具有足够的核心和频率,内存容量满足业务需求,使用高速的 SSD 存储设备。

2、合理分配资源,如为数据库服务器预留足够的内存,避免其他应用程序抢占资源。

(二)数据库设计优化1、遵循规范化设计原则,减少数据冗余,确保数据的一致性和完整性。

2、合理创建索引,根据业务查询的特点,在经常用于查询、连接和排序的字段上创建索引,但要避免过度索引。

3、对大表进行分区,将数据按照一定的规则分布在不同的物理存储上,提高查询和管理的效率。

如何优化MySQL数据库的IO性能问题

如何优化MySQL数据库的IO性能问题引言MySQL作为一种广泛使用的关系型数据库管理系统,用于存储和管理大量的数据。

然而,随着数据量不断增长,对MySQL数据库的IO性能需求也越来越高。

在本篇文章中,我们将深入探讨如何优化MySQL数据库的IO性能问题,从而提升整个系统的效率和稳定性。

一、概述MySQL数据库的IO性能问题通常涉及两个方面:磁盘IO和内存IO。

磁盘IO 指的是数据从磁盘读取或写入的过程,而内存IO则是指从内存中读取或写入数据的过程。

优化这两个方面的IO性能可以极大地提高MySQL数据库的性能和响应速度。

二、优化磁盘IO性能1. 选择合适的磁盘类型选择合适的磁盘类型对于提升磁盘IO性能至关重要。

传统的机械硬盘(HDD)适合存储大量数据,但读写速度较慢。

在需要快速读写的场景中,使用固态硬盘(SSD)能够显著提升性能。

SSD具有更高的读写速度和更低的延迟,可大幅减少磁盘IO的瓶颈。

2. 合理设置文件系统选择合适的文件系统可以提高磁盘IO性能。

较新的文件系统如Ext4或XFS通常表现得更好,而较旧的文件系统如Ext2或Ext3可能有些过时。

使用较新的文件系统可以利用其改进的算法和优化,从而提高磁盘IO性能。

3. 分区和分布式存储通过分区将数据分散到多个磁盘上,可以实现并行处理,提高磁盘IO性能。

此外,采用分布式存储技术如MySQL的分片功能,可以将数据分布到多个物理服务器上,进一步提高系统的响应速度和可扩展性。

三、优化内存IO性能1. 增加数据库缓存通过增加数据库缓存的大小,可以减少磁盘IO的次数,提升读取数据的速度。

将热数据(频繁访问的数据)保存在内存中,可以极大地提高数据库的性能。

MySQL提供了一个称为Query Cache的功能,可以缓存执行过的查询结果,避免重复计算,提高查询效率。

2. 调整数据库参数合理地调整数据库的参数设置也可以优化内存IO性能。

例如,调整innodb_buffer_pool_size参数可以增加InnoDB存储引擎的缓存大小,减少磁盘IO次数。

数据库性能优化案例分析和优化数据库性能的实际案例

数据库性能优化案例分析和优化数据库性能的实际案例数据库作为管理和存储数据的重要工具,在现代信息系统中扮演着至关重要的角色。

然而,随着数据量的不断增长和业务的复杂化,数据库性能问题也随之而来。

为了解决这些问题,数据库性能优化成为了关注的焦点。

本文将通过分析实际案例,探讨数据库性能优化的方法和实践。

一、案例一:查询性能优化在一个电商平台的数据库中,查询操作占据了绝大部分的数据库负载。

客户在平台上进行商品搜索等操作时,查询的速度变慢,影响了用户体验和交易效率。

经过分析,我们发现以下几个问题:1. 没有适当的索引:索引是加速数据库查询的关键因素。

在该案例中,我们发现很多查询语句没有合适的索引,导致数据库需要进行全表扫描,严重影响了查询的速度。

解决方案:根据实际查询需求和数据表的特点,合理地创建索引,以提高查询效率。

但是需要注意的是,过多或者过少的索引都会对性能产生负面影响,需要做好平衡。

2. 查询语句优化:检查并优化查询语句,避免使用过于复杂的 SQL 语句,例如多重嵌套查询、不必要的关联等。

通过优化查询语句,减少数据库的负载,提高查询速度。

3. 数据库服务器性能不足:在高峰期,数据库服务器的性能出现瓶颈,无法满足用户的查询需求。

这可能是由于硬件配置不足或者数据库参数设置不合理等原因。

解决方案:可以考虑升级硬件设备,并对数据库参数进行调整,以提高数据库服务器的性能。

二、案例二:写入性能优化在一个订单管理系统的数据库中,写入操作频繁而且耗时较长,导致订单处理效率低下。

在分析问题原因后,发现以下几个关键问题:1. 锁冲突:在高并发情况下,多个写入操作会引发锁竞争,导致大量的阻塞和等待,进而降低数据库的写入性能。

解决方案:通过合理的事务隔离级别和锁调整,减少锁的粒度,降低锁冲突的可能性。

可以使用乐观锁或者行级锁来解决并发写入问题。

2. 数据库日志写入性能不足:数据库的写入操作通常需要将数据写入到日志中,以确保数据的持久性。

数据库性能调优方法与步骤

数据库性能调优方法与步骤数据库性能是指数据库在处理用户请求时的速度和效率。

随着数据量的增长和用户需求的不断提高,数据库性能调优成为了保证系统正常运行和提升用户体验的重要环节。

本文将介绍数据库性能调优的方法与步骤,帮助读者了解如何进行有效的数据库性能调优。

1. 监控和分析数据库性能在进行数据库性能调优之前,首先需要监控数据库的性能指标,例如响应时间、处理能力、并发连接数等。

这些指标可以通过数据库性能监控工具或系统日志来获取。

然后根据监控结果进行分析,找出数据库性能瓶颈和不足之处,为后续的调优工作提供依据。

2. 优化数据库结构数据库结构的设计对于数据库性能至关重要。

在设计数据库时,应合理划分表和字段,避免冗余和重复数据的存在。

多表关联查询可能会影响性能,可考虑使用索引来加速查询。

此外,对于大型的数据库应用,考虑使用分库分表等技术来分散数据负载,提高系统的并发处理能力。

3. 优化SQL查询语句SQL查询语句的优化对于提升数据库性能非常重要。

合理地编写和优化SQL查询语句可以减少数据库的IO操作和查询时间。

在编写查询语句时,应避免使用SELECT * 和嵌套查询,尽量使用JOIN操作来优化多表关联查询。

另外,为频繁被查询的字段和表创建索引,可以大大提高查询的效率。

4. 资源优化数据库性能调优还需要注意资源的合理分配利用。

在硬件方面,可以考虑使用高性能的硬盘和存储设备,增加内存容量来提高数据库的读写速度;在网络方面,保证高速稳定的网络连接,避免网络延迟对数据库性能的影响。

此外,定期清理并维护数据库的日志、缓存和临时文件,及时清理无用的数据和索引,可以释放磁盘空间和提高数据库的性能。

5. 优化数据库参数设置数据库的参数设置也会影响数据库的性能。

因此,通过调整数据库参数来优化性能是一种常用的调优手段。

不同的数据库系统有不同的参数设置,根据实际情况进行调整。

例如,可以调整数据库的缓冲区大小、并发连接数、日志记录策略等参数,以适应不同的负载情况和需求。

Oracle数据库性能优化分析

Oracle数据库性能优化分析Oracle数据库性能优化是数据库管理中不可缺少的一部分。

要想让Oracle数据库运行得更快、更稳定,就需要进行性能优化。

这篇文章将从诊断问题、优化SQL查询、调整数据库参数等方面,介绍Oracle数据库性能优化的主要方法。

一、诊断问题在进行Oracle数据库性能优化之前,需要诊断问题,找出可能影响数据库性能的因素。

可以采用Oracle自带的一些工具,比如AWR(Automatic Workspace Repository)报告、ASH (Active Session History)数据等,来分析数据库的性能瓶颈。

AWR报告可以提供大量的信息,包括系统负载、等待事件、SQL执行统计等,这些信息可以帮助我们找出哪些SQL语句执行缓慢、哪些等待事件占用了过多的系统资源。

ASH数据则在AWR报告的基础上,提供了更为详细的会话信息。

我们可以通过对ASH数据的分析,了解每个会话的活动情况、等待事件及其统计信息等。

二、优化SQL查询优化SQL查询是Oracle数据库性能优化的重要步骤。

通过改写SQL查询、优化索引、统计信息等,来改善数据库的查询效率。

1. 改写SQL查询Oracle支持许多不同的SQL查询语句,而不同的查询语句的效率也是不同的。

比如,使用程序中嵌套的查询语句,可能会导致性能下降。

在这种情况下,可以使用联接查询来代替嵌套查询。

例如:SELECT *FROM departmentWHERE dept_id IN (SELECT dept_idFROM employeeWHERE emp_name = 'John');可以使用联接查询来代替上述嵌套查询:SELECT *FROM department, employeeWHERE department.dept_id = employee.dept_idAND employee.emp_name = 'John';2. 优化索引建立适当的索引是提高Oracle数据库性能的有效方法之一。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一、M YSQL数据库设计规范
1、数据库命名规范
a、采用26个英文字母(区分大小写)和0-9的自然数(经常不需要)加上下划线'_'组成;
b、命名简洁明确(长度不能超过30个字符);
c、例如:user, stat, log, 也可以wifi_user, wifi_stat, wifi_log给数据库加个前缀;
d、除非是备份数据库可以加0-9的自然数:user_db_20151210;
2、数据库表名命名规范
a、采用26个英文字母(区分大小写)和0-9的自然数(经常不需要)加上下划线'_'组成;
b、命名简洁明确,多个单词用下划线'_'分隔;
例如:user_login, user_profile, user_detail, user_role, user_role_relation,
user_role_right, user_role_right_relation
注:表前缀'user_'可以有效的把相同关系的表显示在一起;
3、数据库表字段名命名规范
a、采用26个英文字母(区分大小写)和0-9的自然数(经常不需要)加上下划线'_'组成;
b、命名简洁明确,多个单词用下划线'_'分隔;
例如:user_login表字段user_id, user_name, pass_word, eamil, tickit, status, mobile, add_time;
c、每个表中必须有自增主键,add_time(默认系统时间)
d、表与表之间的相关联字段名称要求尽可能的相同;
4、数据库表字段类型规范
用尽量少的存储空间来存数一个字段的数据;
例如:能使用int就不要使用varchar、char,能用varchar(16)就不要使用varchar(256);
IP地址最好使用int类型;
固定长度的类型最好使用char,例如:邮编;
能使用tinyint就不要使用smallint,int;
最好给每个字段一个默认值,最好不能为null;
5、数据库表索引规范
命名简洁明确,例如:user_login表user_name字段的索引应为user_name_index唯一索引;
为每个表创建一个主键索引;
为每个表创建合理的索引;
建立复合索引请慎重;
6、简单熟悉数据库范式
1、第一范式(1NF):字段值具有原子性,不能再分(所有关系型数据库系统都满足第一范式);
例如:姓名字段,其中姓和名是一个整体,如果区分姓和名那么必须设立两个独立字段;
2、第二范式(2NF):一个表必须有主键,即每行数据都能被唯一的区分;
备注:必须先满足第一范式;
3、第三范式(3NF):一个表中不能包涵其他相关表中非关键字段的信息,即数据表不能有沉余字段;
备注:必须先满足第二范式;
备注:往往我们在设计表中不能遵守第三范式,因为合理的沉余字段将会给我们减少join 的查询;
例如:相册表中会添加图片的点击数字段,在相册图片表中也会添加图片的点击数字段;
二、M YSQL数据库设计原则
1、核心原则
不在数据库做运算;
cpu计算务必移至业务层;
控制列数量(字段少而精,字段数建议在20以内);
平衡范式与冗余(效率优先;往往牺牲范式)
拒绝3B(拒绝大sql语句:big sql、拒绝大事务:big transaction、拒绝大批量:big batch);
2、字段类原则
用好数值类型(用合适的字段类型节约空间);
字符转化为数字(能转化的最好转化,同样节约空间、提高查询性能);
避免使用NULL字段(NULL字段很难查询优化、NULL字段的索引需要额外空间、NULL字段的复合索引无效);
少用text类型(尽量使用varchar代替text字段);
3、索引类原则
合理使用索引(改善查询,减慢更新,索引一定不是越多越好);
字符字段必须建前缀索引;
不在索引做列运算;
innodb主键推荐使用自增列(主键建立聚簇索引,主键不应该被修改,字符串不应该做主键)(理解Innodb的索引保存结构就知道了);
不用外键(由程序保证约束);
4、sql类原则
sql语句尽可能简单(一条sql只能在一个cpu运算,大语句拆小语句,减少锁时间,一条大sql可以堵死整个库);
简单的事务;
避免使用trig/func(触发器、函数不用客户端程序取而代之);
不用select *(消耗cpu,io,内存,带宽,这种程序不具有扩展性);
OR改写为IN(or的效率是n级别);
OR改写为UNION(mysql的索引合并很弱智);
select id from t where phone = ’159′ or name = ‘john’;
=>
select id from t where phone=’159′
union
select id from t where name=’jonh’
避免负向%;
慎用count(*);
limit高效分页(limit越大,效率越低);
使用union all替代union(union有去重开销);
少用连接join;
使用group by;
请使用同类型比较;
打散批量更新;
三、数据库结构的优化
1、选择合适的数据类型
1、数据类型选择
数据类型的选择,重点在于“合适”二字,如何确定选择的数据类型是否合适了?
1、使用可以存下你的数据的最小的数据类型。

(时间类型数据:可以使用varchar类型,
可以使用int类型,也可以使用时间戳类型)
2、使用简单的数据类型,int要比varchar类型在mysql处理上简单。

(int类型存储时
间是最好的选择)
3、尽可能的使用not null定义字段。

(innodb的特性所决定,非not null的值,需要额
外的在字段存储,同时也会增加IO和存储的开销)
4、尽量少用text类型,非用不可时最好考虑分表。

2、案例
案例一:int类型存储时间-时间转换
使用int来存储日期时间,利用FROM_UNIXTIME(),UNIX_TIMESTAMP()两个函数来进行转换。

创建表:
select FROM_UNIXTIME(timestr) from test;
结论:
1、unix_timestamp()函数是将日期格式的数据转换为int类型
2、FROM_UNIXTIME(timestr)函数是将int类型转换为时间格式。

相关文档
最新文档