首页 数据库 mysql教程 MySQL数据库优化下_MySQL

MySQL数据库优化下_MySQL

Jun 01, 2016 pm 01:59 PM
数据库优化 源代码

1.4 MySQL 基准套件

  本章本来要包括MySQL基准套件(以及 crash-me)的技术描述的,但是至今还未写。现在,您可以通过查看MySQL发布源代码 `sql-bench' 目录下的代码以及结果有一个更好的想法。

  基准套件就是想告诉用户执行什么样的SQL查询表现的更好或者更差。

  请注意,这个基准是单线程的,因此它度量了操作执行的最少时间。我们未来打算增加多线程测试的基准套件。

  想要使用基准套件,必备以下几个条件:

  基准套件在MySQL的发布源代码中就有。可以去 http://dev.mysql.com/downloads/ 下载发布版或者使用现有开发代码树(详情请看"2.3.3 Installing from the Development Source Tree")。

  基准脚本是用Perl写的,它用Perl的DBI模块来连接数据库,因此必须安装DBI模块。并且还需要每个要做测试的服务器上都有特定的BDB驱动程序。例如,为了测试MySQL、PostgreSQL和DB2,就必须安装 DBD::mysql, DBD::Pg 及 DBD::DB2 模块。详情请看"2.7 Perl Installation Note"。
取得MySQL的分发源代码后,就能在 `sql-bench' 目录下看到基准套件。想要运行这些基准测试,请先搭建好服务,然后进入 `sql-bench' 目录,执行 run-all-tests 脚本:

shell> cd sql-bench
shell> perl run-all-tests --server=server_name


  server_name 可以是任何一个可用的服务。想要列出所有的可用选项和支持的服务,只要调用以下命令:

shell> perl run-all-tests --help


  crash-me 脚本也是放在 `sql-bench' 目录下。crash-me 通过执行真正的查询以试图判断数据库都支持什么特性、性能表现以及限制。例如,它可以判断:

  都支持什么字段类型
  支持多少索引
  支持什么样的函数
  能支持多大的查询
  VARCHAR 字段类型能支持多大
  可以从 http://dev.mysql.com/tech-resources/crash-me.php 上找到各种不同数据库 crash-me 的结果。更多的信息请访问 http://dev.mysql.com/tech-resources/benchmarks。

  1.5 使用您自己的基准

  请确定对您的数据库或者应用程序做基准测试,以发现它们的瓶颈所在。解决这个瓶颈(或者使用一个假的模块来代替)之后,就能很容易地找到下一个瓶颈了。即使应用程序当前总体的表现可以接受,不过还是至少要做好找到每个瓶颈的计划,说不定某天您就希望应用程序能有更好的性能。

  从MySQL的基准套件中就能找到一个便携可移植的基准测试程序了。详情请看"7.1.4 The MySQL Benchmark Suite"。您可以从基准套件中的任何一个程序,做适当的修改以适合您的需要。通过整个方式,您就可以有各种不同的办法来解决问题,知道哪个程序才是最快的。

  另一个基准套件是开放源码的数据库基准,可以在 http://osdb.sourceforge.net 上找到。

  当系统负载十分繁重的时候,通常就会发生问题。我们就有很多客户联系我们说他们有一个(测试过的)生产系统也遭遇了负载问题。在很多情况下,性能问题归结于数据库的基本设计(例如,在高负载下扫描数据表的表现不好)、操作系统、或者程序库等因素。很多时候,这些问题在还没有正式用于生产前相对更容易解决。

  为了避免发生这样的问题,最好让您的应用程序在可能的最差的负载下做基准测试!可以使用Super Smack,在 http://jeremy.zawodny.com/mysql/super-smack 可以找到。从它名字的意思就能想到,只要您愿意,它就能让您的系统死掉,因此确认只在开发系统上做测试
2 优化 SELECT 语句及其他查询

  首先,影响所有语句的一个因素是:您的权限设置越复杂,那么开销就越大。

  使用比较简单的 GRANT 语句能让MySQL减少在客户端执行语句时权限检查的开销。例如,如果没有设定任何表级或者字段级的权限,那么服务器就无需检查 tables_priv 和 columns_priv 表的记录了。同样地,如果没有对帐户设定任何资源限制的话,那么服务器也就无需做资源使用统计了。如果有大量查询的话,花点时间来规划简单的授权机制以减少服务器权限检查的开销是值得的。

  如果问题处在一些MySQL特定的表达式或者函数上,则可以通过 mysql 客户端程序使用 BENCHMARK() 函数做一个定时测试。它的语法是:BENCHMARK(loop_count,expression)。例如:

mysql> SELECT BENCHMARK(1000000,1+1);
+------------------------+
| BENCHMARK(1000000,1+1) |
+------------------------+
|                      0 |
+------------------------+
1 row in set (0.32 sec)


  上述结果是在Pentium II 400MHz的系统上执行得到的。它告诉我们:MySQL在这个系统上可以在0.32秒内执行 1,000,000 次简单的加法运算。

  所有的MySQL函数都应该被最优化,不过仍然有些函数例外。BENCHMARK() 是一个用于检查查询语句中是否存在问题的非常好的工具

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
1 个月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
1 个月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
1 个月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.聊天命令以及如何使用它们
1 个月前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

Linux下更新curl版本教程! Linux下更新curl版本教程! Mar 07, 2024 am 08:30 AM

在Linux下更新curl版本,您可以按照以下步骤进行操作:检查当前curl版本:首先,您需要确定当前系统中安装的curl版本。打开终端,并执行以下命令:curl--version该命令将显示当前curl的版本信息。确认可用的curl版本:在更新curl之前,您需要确定可用的最新版本。您可以访问curl的官方网站(curl.haxx.se)或相关的软件源,查找最新版本的curl。下载curl源代码:使用curl或浏览器,下载您选择的curl版本的源代码文件(通常为.tar.gz或.tar.bz2

Hibernate 如何优化数据库查询性能? Hibernate 如何优化数据库查询性能? Apr 17, 2024 pm 03:00 PM

优化Hibernate查询性能的技巧包括:使用延迟加载,推迟加载集合和关联对象;使用批处理,组合更新、删除或插入操作;使用二级缓存,将经常查询的对象存储在内存中;使用HQL外连接,检索实体及其相关实体;优化查询参数,避免SELECTN+1查询模式;使用游标,以块的方式检索海量数据;使用索引,提高特定查询的性能。

Linux内核源代码存放路径解析 Linux内核源代码存放路径解析 Mar 14, 2024 am 11:45 AM

Linux内核是一个开源的操作系统内核,其源代码存储在一个专门的代码仓库中。在本文中,我们将详细解析Linux内核源代码的存放路径,并通过具体的代码示例来帮助读者更好地理解。1.Linux内核源代码存放路径Linux内核源代码存储在一个名为linux的Git仓库中,该仓库托管在[https://github.com/torvalds/linux](http

如何通过数据库优化提高Python网站的访问速度? 如何通过数据库优化提高Python网站的访问速度? Aug 07, 2023 am 11:29 AM

如何通过数据库优化提高Python网站的访问速度?摘要在构建Python网站时,数据库是一个关键的组成部分。如果数据库访问速度慢,会直接影响网站的性能和用户体验。本文将讨论一些优化数据库的方法,以提高Python网站的访问速度,并附有一些示例代码。引言对于大多数Python网站来说,数据库是存储和检索数据的关键部分。如果不加以优化,数据库可能成为性能瓶颈。本

java源码怎么查看 java源码怎么查看 Dec 27, 2023 pm 04:41 PM

查看步骤:1、找到安装目录或者在线查看;2、解压源代码;3、使用文本编辑器或集成开发环境;4、导航和查看源码。详细介绍:1、找到安装目录或者在线查看:如果安装了JDK,可以在JDK的安装目录中找到Java的源代码。在JDK的安装目录中,通常有一个 src.zip 或类似的压缩文件,里面包含了 Java 核心类库的源代码;在线查看Java源代码也是可能的等等。

如何通过使用复合索引来提高MySQL性能 如何通过使用复合索引来提高MySQL性能 May 11, 2023 am 11:10 AM

在MySQL数据库中,索引是一种非常重要的性能优化手段。当表中的数据量增加时,不适当的索引会导致查询变慢,甚至出现数据库崩溃的情况。为了提高数据库性能,在设计表结构和查询语句时需要合理地使用索引。而复合索引是一种较为高级的索引技术,通过将多个字段作为索引的组合来提高查询的效率。在本文中,将详细介绍如何通过使用复合索引来提高MySQL的性能。什么是复合索引复合

Spring Boot的性能优化秘籍:打造疾风般快速的应用 Spring Boot的性能优化秘籍:打造疾风般快速的应用 Feb 25, 2024 pm 01:01 PM

SpringBoot是一款广受欢迎的Java框架,以其简单易用和快速开发而著称。然而,随着应用程序的复杂性增加,性能问题可能会成为瓶颈。为了帮助您打造疾风般快速的springBoot应用,本文将分享一些实用的性能优化秘诀。优化启动时间应用程序的启动时间是用户体验的关键因素之一。SpringBoot提供了多种优化启动时间的途径,例如使用缓存、减少日志输出和优化类路径扫描。您可以通过在application.properties文件中设置spring.main.lazy-initialization

怎么查看Tomcat源代码 怎么查看Tomcat源代码 Jan 25, 2024 pm 01:56 PM

查看Tomcat源代码的步骤:1、下载Tomcat源代码;2、在IDEA中导入Tomcat源代码;3、查看源代码;4、理解Tomcat的工作原理;5、参与社区和贡献;6、注意事项;7、持续学习和更新;8、使用工具和插件。详细介绍:1、下载Tomcat源代码,首先需要获取Tomcat的源代码,可以从Apache Tomcat的官方网站上下载源代码包等等。

See all articles