为什么要优化数据库,提高访问速度,防止出现死锁,这是我们经常想到的,那数据库为什么会产生这些问题啊,我们先来看看数据库产生访问速度的瓶颈在哪里,机器物理上的磁盘搜索 磁盘读写 和cpu的周期,而软件上数据库为了读写的协调性采用了锁机制,不同的引擎有不同的锁机制,主要看myisam innodb 的锁机制,myisam是表级锁,都共享 写独占的串行操作,所以select insert为主的行为用这种引擎好,myisam锁的调度是写进程先获得锁,不仅如此即使读请求先到锁等待队列,写请求后到,写锁也会查到读请求之前,这是因为 引擎认为写请求比读请求重要,因大量的update操作会造成查询操作很难获得读锁,从而可能永远阻塞,但可以通过调节一些调度行为。
首先一个因素是你的许可设置的越复杂开销就越大,所以在grant语句的时候尽量简单许可,如果是函数的问题可以在客户端通过SELECT BENCHMARK(1000000,1+1);benchmark(num,fn)表示函数fn执行num次 可以用来查看函数的执行效率,
可以使用explain语法来分析 获取select的相关信息explain talbename /explain select * 将显示表如何连接和联接的次序,更重要的是可以用来发现什么时候为表建立一个索引,analyaze table分析表,】
select 优化 ,可以通过explain来分析此select 语句使用了那些索引,
去除不必要的括号:
· ((a AND b) AND c OR (((a AND b) AND (c AND d))))
· -> (a AND b AND c) OR (a AND b AND c AND d)
· 常量重叠:
· (a<b AND b=c) AND a=5
· -> b>5 AND b=c AND a=5
· 去除常量条件(由于常量重叠需要):
· (B>=5 AND B=5) OR (B=6 AND 5=5) OR (B=7 AND 5=6)
· -> B=5 OR B=6
· 索引使用的常数表达式仅计算一次。
- 对于MyISAM和HEAP表,在一个单个表上的没有一个WHERE的COUNT(*)直接从表中检索信息。当仅使用一个表时,对NOT NULL表达式也这样做。
- 无效常数表达式的早期检测。MySQL快速检测某些SELECT语句是不可能的并且不返回行。
- 如果不使用GROUP BY或分组函数(COUNT()、MIN()……),HAVING与WHERE合并。
- 对于联接内的每个表,构造一个更简单的WHERE以便更快地对表进行WHERE计算并且也尽快跳过记录。
- 所有常数的表在查询中比其它表先读出。常数表为:
- 空表或只有1行的表。
- 与在一个PRIMARY KEY或UNIQUE索引的WHERE子句一起使用的表,这里所有的索引部分使用常数表达式并且索引部分被定义为NOT NULL。
下列查询使用索引按排序顺序检索行,不用另外的排序:
SELECT ... FROM tbl_name
ORDER BY key_part1,key_part2,... ;
SELECT ... FROM tbl_name
ORDER BY key_part1 DESC, key_part2 DESC, ... ;
当某一列使用过索引后,默认就按索引进行排序了,以后在使用该列排序的时候就不用排列了,直接可以使用,
Innodb的行级别锁,支持事务;事务的caid 为原子性atomicity 一致性consitien 隔离性isolocation 持久性durable
innodb容易发生死锁,两个事物都需要对方的排他锁才能完成事务,双方都等待状态,
数据库 和 数据结构的优化
分享到:
相关推荐
【mysql优化专题】:本专题全文围绕mysql优化进行全方位讲解,本篇为优化入门篇,让大家知道为什么要优化,究竟在优化什么。喜欢的朋友可以关注收藏。 优化,一直是面试最常问的一个问题。因为从优化的角度,优化的...
金融级PostgreSQL数据库全方位监控及优化。平安科技 梁海安 (数据库技术专家)。受托于平安集团,向集团公司和集团所有 下属子公司提供IT规划、开发和运营服务 的IT服务提供商。2014年开始引入MySQL等开源数据库 ...
MySQL-5.6-全方位效能调优-中文
在此基础上,MySQL 5.6 进行了全方位的改进,旨在让富于创新的 DBA 和开发人员能够在最新一代的开发框架和硬件平台上创建和部署下一代 Web、嵌入式和云计算/SaaS/DaaS 之应用程序。 简而言之,MySQL 5.6 只是 MySQL ...
共2卷:一本全方位讲述MYSQL的好书,包括高性能查询, MYSQL优化,集群等等.
共2卷: 一本全方位讲述MYSQL的好书(英文),包括高性能查询, MYSQL优化,集群等等.
4. 功能齐全:系统提供虚拟主机购买、管理、续费、升级、备份等全方位服务,满足用户的各种需求。 经过本次汉化,该系统将更好地适应国内市场,为广大用户提供更优质的服务。本毕设将主要涉及以下方面: 1. 对系统...
2. 完善的客户信息管理功能,包括客户的基本资料、联系方式、交易记录等,方便企业对客户进行全方位的管理与维护。 3. 强大的销售跟踪功能,支持销售漏斗分析、销售业绩统计等,帮助企业实时掌握销售状况,优化销售...
诞生于1995年,由Rasmus Lerdorf创建,PHP最初用于简单的网页动态处理,如今已发展成为一款功能齐全、生态丰富的全栈开发工具,支持从网站前端交互到后端业务逻辑、数据库操作乃至API接口开发的全方位需求。...
诞生于1995年,由Rasmus Lerdorf创建,PHP最初用于简单的网页动态处理,如今已发展成为一款功能齐全、生态丰富的全栈开发工具,支持从网站前端交互到后端业务逻辑、数据库操作乃至API接口开发的全方位需求。...
诞生于1995年,由Rasmus Lerdorf创建,PHP最初用于简单的网页动态处理,如今已发展成为一款功能齐全、生态丰富的全栈开发工具,支持从网站前端交互到后端业务逻辑、数据库操作乃至API接口开发的全方位需求。...
诞生于1995年,由Rasmus Lerdorf创建,PHP最初用于简单的网页动态处理,如今已发展成为一款功能齐全、生态丰富的全栈开发工具,支持从网站前端交互到后端业务逻辑、数据库操作乃至API接口开发的全方位需求。...
诞生于1995年,由Rasmus Lerdorf创建,PHP最初用于简单的网页动态处理,如今已发展成为一款功能齐全、生态丰富的全栈开发工具,支持从网站前端交互到后端业务逻辑、数据库操作乃至API接口开发的全方位需求。...
诞生于1995年,由Rasmus Lerdorf创建,PHP最初用于简单的网页动态处理,如今已发展成为一款功能齐全、生态丰富的全栈开发工具,支持从网站前端交互到后端业务逻辑、数据库操作乃至API接口开发的全方位需求。...
诞生于1995年,由Rasmus Lerdorf创建,PHP最初用于简单的网页动态处理,如今已发展成为一款功能齐全、生态丰富的全栈开发工具,支持从网站前端交互到后端业务逻辑、数据库操作乃至API接口开发的全方位需求。...
企业级新闻系统源码程序包是一款功能强大、灵活多变且高度可定制化的新闻发布与管理平台,旨在满足大型企业或机构对于新闻资讯管理的全方位需求。该程序包不仅提供了新闻发布、编辑、审核、分类管理等功能,还内置了...
诞生于1995年,由Rasmus Lerdorf创建,PHP最初用于简单的网页动态处理,如今已发展成为一款功能齐全、生态丰富的全栈开发工具,支持从网站前端交互到后端业务逻辑、数据库操作乃至API接口开发的全方位需求。...
诞生于1995年,由Rasmus Lerdorf创建,PHP最初用于简单的网页动态处理,如今已发展成为一款功能齐全、生态丰富的全栈开发工具,支持从网站前端交互到后端业务逻辑、数据库操作乃至API接口开发的全方位需求。...
诞生于1995年,由Rasmus Lerdorf创建,PHP最初用于简单的网页动态处理,如今已发展成为一款功能齐全、生态丰富的全栈开发工具,支持从网站前端交互到后端业务逻辑、数据库操作乃至API接口开发的全方位需求。...
诞生于1995年,由Rasmus Lerdorf创建,PHP最初用于简单的网页动态处理,如今已发展成为一款功能齐全、生态丰富的全栈开发工具,支持从网站前端交互到后端业务逻辑、数据库操作乃至API接口开发的全方位需求。...