首页 数据库 mysql教程 Monty说MySQL的优化(一)_MySQL

Monty说MySQL的优化(一)_MySQL

Jun 01, 2016 pm 02:01 PM
优化 应用程序 数据库表 硬件

 一、我们可以且应该优化什么?

  硬件

  操作系统/软件库

  SQL服务器(设置和查询)

  应用编程接口(API)

  应用程序

  二、优化硬件

  如果你需要庞大的数据库表(>2G),你应该考虑使用64位的硬件结构,像Alpha、Sparc或即将推出的IA64。因为MySQL内部使用大量64位的整数,64位的CPU将提供更好的性能。

  对大数据库,优化的次序一般是RAM、快速硬盘、CPU能力。

  更多的内存通过将最常用的键码页面存放在内存中可以加速键码的更新。

  如果不使用事务安全(transaction-safe)的表或有大表并且想避免长文件检查,一台UPS就能够在电源故障时让系统安全关闭。

  对于数据库存放在一个专用服务器的系统,应该考虑1G的以太网。延迟与吞吐量同样重要。

  三、优化磁盘

  为系统、程序和临时文件配备一个专用磁盘,如果确是进行很多修改工作,将更新日志和事务日志放在专用磁盘上。

  低寻道时间对数据库磁盘非常重要。对与大表,你可以估计你将需要log(行数)/log(索引块长度/3*2/(键码长度 + 数据指针长度))+1次寻到才能找到一行。对于有500000行的表,索引Mediun int类型的列,需要log(500000) / log(1024/3*2/(3 + 2))+1=4次寻道。上述索引需要500000*7*3/2=5.2M的空间。实际上,大多数块将被缓存,所以大概只需要1-2次寻道。

  然而对于写入(如上),你将需要4次寻道请求来找到在哪里存放新键码,而且一般要2次寻道来更新索引并写入一行。

  对于非常大的数据库,你的应用将受到磁盘寻道速度的限制,随着数据量的增加呈N log N数据级递增。

  将数据库和表分在不同的磁盘上。在MySQL中,你可以为此而使用符号链接。

  条列磁盘(RAID 0)将提高读和写的吞吐量。

  带镜像的条列(RAID 0+1)将更安全并提高读取的吞吐量。写入的吞吐量将有所降低。

  不要对临时文件或可以很容易地重建的数据所在的磁盘使用镜像或RAID(除了RAID 0)。

  在Linux上,在引导时对磁盘使用命令hdparm -m16 -d1以启用同时读写多个扇区和DMA功能。这可以将响应时间提高5~50%。

  在Linux上,用async (默认)和noatime挂载磁盘(mount)。

  对于某些特定应用,可以对某些特定表使用内存磁盘,但通常不需要。

  四、优化操作系统

  不要交换区。如果内存不足,增加更多的内存或配置你的系统使用较少内存。

  不要使用NFS磁盘(会有NFS锁定的问题)。

  增加系统和MySQL服务器的打开文件数量。(在safe_mysqld脚本中加入ulimit -n #)。

  增加系统的进程和线程数量。

  如果你有相对较少的大表,告诉文件系统不要将文件打碎在不同的磁道上(Solaris)。

  使用支持大文件的文件系统(Solaris)。

  选择使用哪种文件系统。在Linux上的Reiserfs对于打开、读写都非常快。文件检查只需几秒种。

  五、选择应用编程接口

  PERL

  可在不同的操作系统和数据库之间移植。

  适宜快速原型。

  应该使用DBI/DBD接口。

  PHP

  比PERL易学。

  使用比PERL少的资源。

  通过升级到PHP4可以获得更快的速度。

  C

  MySQL的原生接口。

  较快并赋予更多的控制。

  低层,所以必须付出更多。

  C++

  较高层次,给你更多的时间来编写应用。

  仍在开发中

  ODBC

  运行在Windows和Unix上。

  几乎可在不同的SQL服务器间移植。

  较慢。MyODBC只是简单的直通驱动程序,比用原生接口慢19%。

  有很多方法做同样的事。很难像很多ODBC驱动程序那样运行,在不同的领域还有不同的错误。

  问题成堆。Microsoft偶尔还会改变接口。

  不明朗的未来。(Microsoft更推崇OLE而非ODBC)

  ODBC

  运行在Windows和Unix上。

  几乎可在不同的SQL服务器间移植。

  较慢。MyODBC只是简单的直通驱动程序,比用原生接口慢19%。

  有很多方法做同样的事。很难像很多ODBC驱动程序那样运行,在不同的领域还有不同的错误。

  问题成堆。Microsoft偶尔还会改变接口。

  不明朗的未来。(Microsoft更推崇OLE而非ODBC)

  JDBC

  理论上可在不同的操作系统何时据库间移植。

  可以运行在web客户端。

  Python和其他

  可能不错,可我们不用它们

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系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脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

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

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

如何将Apple Vision Pro连接到PC 如何将Apple Vision Pro连接到PC Apr 08, 2024 pm 09:01 PM

AppleVisionPro头戴式设备本身与电脑不兼容,因此您必须将其配置为连接到Windows电脑。自推出以来,AppleVisionPro一直备受追捧,拥有其尖端功能和广泛的可操作性,很容易理解原因。虽然您可以对其进行一些调整以适应PC,并且其功能在很大程度上取决于AppleOS,因此其功能将受到限制。如何将AppleVisionPro连接到我的电脑?1.验证系统要求你需要最新版本的Windows11(不支持自定义电脑和Surface设备)支持64位2GHZ或更快的快速处理器高性能GPU,最

MS Paint在Windows 11中无法正常工作 MS Paint在Windows 11中无法正常工作 Mar 09, 2024 am 09:52 AM

MicrosoftPaint在Windows11/10中不起作用吗?嗯,这似乎是一个常见的问题,我们有一些很好的解决方案来解决这个问题。用户一直抱怨说,当试图使用MSPaint时,无法工作或打开。应用程序中的滚动条不起作用,粘贴图标没有显示,崩溃,等等。幸运的是,我们收集了一些最有效的故障排除方法来帮助您解决MicrosoftPaint应用程序的问题。为什么MicrosoftPaint不起作用?MSPaint无法在Windows11/10PC上运行的一些可能原因如下:安全标识符已损坏。挂起的系统

Shazam应用程序在iPhone中无法运行:修复 Shazam应用程序在iPhone中无法运行:修复 Jun 08, 2024 pm 12:36 PM

iPhone上的Shazam应用程序有问题?Shazam可帮助您通过聆听歌曲找到歌曲。但是,如果Shazam无法正常工作或无法识别歌曲,则必须手动对其进行故障排除。修复Shazam应用程序不会花费很长时间。因此,无需再浪费时间,请按照以下步骤解决Shazam应用程序的问题。修复1–禁用粗体文本功能iPhone上的粗体文本可能是Shazam无法正常运行的原因。步骤1–您只能从iPhone设置中执行此操作。所以,打开它。步骤2–接下来,打开其中的“显示和亮度”设置。步骤3–如果您发现启用了“粗体文本

将照片从旧版照片移动到Windows 11中的新照片应用程序 将照片从旧版照片移动到Windows 11中的新照片应用程序 Mar 10, 2024 am 09:37 AM

本文将指导您如何将照片从PhotosLegacy迁移至Windows11中的新Photos应用程序。微软在Windows11中引入了经过改进的Photos应用程序,为用户提供了更简洁且功能更丰富的体验。新的Photos应用程序在对照片进行分类方面与过去的PhotosLegacy应用程序有所不同。它会将照片像其他Windows文件一样整理到文件夹中,而不是创建专辑。然而,仍在使用PhotosLegacy应用程序的用户可以轻松将他们的照片迁移至MicrosoftPhotos的新版本中。什么是Phot

在Ubuntu 24.04上安装和运行Ubuntu笔记应用程序的方法 在Ubuntu 24.04上安装和运行Ubuntu笔记应用程序的方法 Mar 22, 2024 pm 04:40 PM

在高中学习的时候,有些学生做的笔记非常清晰准确,比同一个班级的其他人都做得更多。对于一些人来说,记笔记是一种爱好,而对于其他人来说,当他们很容易忘记任何重要事情的小信息时,则是一种必需品。Microsoft的NTFS应用程序对于那些希望保存除常规讲座以外的重要笔记的学生特别有用。在这篇文章中,我们将描述Ubuntu24上的Ubuntu应用程序的安装。更新Ubuntu系统在安装Ubuntu安装程序之前,在Ubuntu24上我们需要确保新配置的系统已经更新。我们可以使用Ubuntu系统中最著名的“a

电脑应用程序发生异常unknown software exception怎么办 电脑应用程序发生异常unknown software exception怎么办 Mar 13, 2024 am 10:08 AM

解决方法:1、重新启动电脑;2、更新软件版本;3、卸载并重新安装程序;4、检查系统文件完整性;5、检查电脑是否有病毒或恶意软件感染;6、清理系统垃圾文件;7、禁用或卸载可能引起冲突的其他程序。

C++ 程序优化:时间复杂度降低技巧 C++ 程序优化:时间复杂度降低技巧 Jun 01, 2024 am 11:19 AM

时间复杂度衡量算法执行时间与输入规模的关系。降低C++程序时间复杂度的技巧包括:选择合适的容器(如vector、list)以优化数据存储和管理。利用高效算法(如快速排序)以减少计算时间。消除多重运算以减少重复计算。利用条件分支以避免不必要的计算。通过使用更快的算法(如二分搜索)来优化线性搜索。

Laravel性能瓶颈揭秘:优化方案大揭秘! Laravel性能瓶颈揭秘:优化方案大揭秘! Mar 07, 2024 pm 01:30 PM

Laravel性能瓶颈揭秘:优化方案大揭秘!随着互联网技术的发展,网站和应用程序的性能优化变得愈发重要。作为一款流行的PHP框架,Laravel在开发过程中可能会面临性能瓶颈。本文将探讨Laravel应用程序可能遇到的性能问题,并提供一些优化方案和具体的代码示例,让开发者能够更好地解决这些问题。一、数据库查询优化数据库查询是Web应用中常见的性能瓶颈之一。在

See all articles