`
bwhzhl
  • 浏览: 103176 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

MyISAM和InnoDB引擎优化

 
阅读更多

一、公共选项

 

skip-external-locking
//避免MySQL的外部锁定,减少出错几率增强稳定性。

 

skip-name-resolve
//禁止MySQL对外部连接进行DNS解析,使用这一选项可以消除MySQL进行DNS解析的时间。但需要注意,如果开启该选项,则所有远程主机连接授权都要使用IP地址方式,否则MySQL将无法正常处理连接请求!

 

max_connections = 1024
//指定MySQL允许的最大连接进程数。如果在访问时经常出现Too Many Connections的错误提示,则需要增大该参数值。

 

query_cache_size = 16M
//默认为0,就是不启用。指定MySQL查询缓冲区的大小。可以通过在MySQL控制台执行以下命令观察:
# > SHOW VARIABLES LIKE ‘%query_cache%’;
# > SHOW STATUS LIKE ‘Qcache%’;
# 如果Qcache_lowmem_prunes的值非常大,则表明经常出现缓冲不够的情况;
如果Qcache_hits的值非常大,则表明查询缓冲使用非常频繁,如果该值较小反而会影响效率,那么可以考虑不用查询缓冲;Qcache_free_blocks,如果该值非常大,则表明缓冲区中碎片很多。

 

sort_buffer_size = 6M
//每个线程的排序缓存大小,该选项对排序order by、group by起作用。注意:该参数对应的分配内存是每连接独占!如果有100个连接,那么实际分配的总共排序缓冲区大小为100 × 6 = 600MB。所以,对于内存在4GB左右的服务器推荐设置为6-8M。

 

record_buffer=16M
//每个进行一个顺序扫描的线程为其扫描的每张表分配这个大小的一个缓冲区,可以设置为2M以上

 

table_cache = 512
//为所有线程打开表的数量。增加该值能增加mysqld要求的文件描述符的数量。Mysql对每个唯一打开的表需要2个文件描述符。

 

二、MyISAM选项

key_buffer_size = 256M
//key_buffer_size指定用于索引的缓冲区大小,增加它可得到更好的索引处理性能。对于内存在4GB左右的服务器该参数可设置为256M或384M。

注意:该参数值设置的过大反而会是服务器整体效率降低!

 

read_buffer_size = 4M
//读查询操作所能使用的缓冲区大小。和sort_buffer_size一样,该参数对应的分配内存也是每连接独享!

 

myisam_sort_buffer_size = 64M
//默认为16M。设置、恢复、修改表的时候使用的缓冲大小,值不要设的太大。

 

join_buffer_size = 8M
//联合查询操作所能使用的缓冲区大小,和sort_buffer_size一样,该参数对应的分配内存也是每连接独享!


三、InnoDB选项

innodb_buffer_pool_size=1G
//一个Innodb最重要的参数,这个参数和MyISAM的key_buffer_size有相似之处,但也是有差别的。这个参数主要缓存innodb表的索引,数据,插入数据时的缓冲,设置得越大,存取表里面数据时所需要的磁盘I/O越少,一般是内存的一半,不超过2G,否则系统会崩溃。为Innodb加速优化首要参数。该参数分配内存的原则:这个参数默认分配只有8M,可以说是非常小的一个值。如果是一个专用DB服务器,那么他可以占到内存的70%-80%。这个参数不能动态更改,所以分配需多考虑。分配过大,会使Swap占用过多,致使Mysql的查询特慢。如果你的数据比较小,那么可分配是你的数据大小+10%左右做为这个参数的值。

例如:数据大小为50M,那么给这个值分配innodb_buffer_pool_size=64M

 

innodb_additional_mem_pool_size=16M
//用来存放Innodb的内部目录这个值不用分配太大,系统可以自动调。不用设置太高。通常比较大数据设置16M够用了,如果表比较多,可以适当的增大。如果这个值自动增加,会在error log有中显示的。

 

innodb_log_file_size=256M
//在日志组中每个日志文件的大小,一般是innodb_buffer_pool_size的25%,官方推荐是innodb_buffer_pool_size的40-50%。一般控制在几个LOG文件相加大小在2G以内为佳。具体情况还需要看你的事务大小,数据大小为依据。说明:这个值分配的大小和数据库的写入速度,事务大小,异常重启后的恢复有很大的关系。

 

innodb_log_files_in_group=2
//指定你有几个日志组。分配原则:一般我们可以用2-3个日值组。默认为两个。

 

innodb_log_buffer_size=3M
//事务在内存中的缓冲。分配原则:控制在2-8M.这个值不用太多的。他里面的内存一般一秒钟写到磁盘一次。具体写入方式和你的事务提交方式有关。在oracle等数据库了解这个,一般最大指定为3M比较合适。

 

innodb_flush_logs_at_trx_commit=0
//控制事务的提交方式分配原则:这个参数只有3个值,0,1,2请确认一下自已能接受的级别。默认为1,主库请不要更改了。性能更高的可以设置为0或是2,但会丢失一秒钟的事务。说明:这个参数的设置对Innodb的性能有很大的影响,所以在这里给多说明一下。当这个值为1时:innodb 的事务LOG在每次提交后写入日值文件,并对日值做刷新到磁盘。这个可以做到不丢任何一个事务。当这个值为2时:在每个提交,日志缓冲被写到文件,但不对日志文件做到磁盘操作的刷新,在对日志文件的刷新在值为2的情况也每秒发生一次。但需要注意的是,由于进程调用方面的问题,并不能保证每秒100%的发生。从而在性能上是最快的。但操作系统崩溃或掉电才会删除最后一秒的事务。当这个值为0时:日志缓冲每秒一次地被写到日志文件,并且对日志文件做到磁盘操作的刷新,但是在一个事务提交不做任何操作。mysqld进程的崩溃会删除崩溃前最后一秒的事务。

分享到:
评论

相关推荐

    MyISAM引擎与InnoDB引擎性能的对比

    总的来说,MyISAM和InnoDB引擎各有优劣,选择哪种引擎取决于你的应用场景和性能需求。如果你的工作负载主要涉及大量读操作和不需要事务处理,MyISAM可以提供更快的速度。而如果需要保证数据一致性,并且有大量的并发...

    MyISAM和InnoDB引擎优化分析

    相反,InnoDB引擎提供事务处理、行级锁定和外键约束,适合需要高度一致性的应用。其优化要点包括: 1. **innodb_buffer_pool_size**: 这是InnoDB最重要的参数,用于缓存数据和索引,减少磁盘I/O。一般建议设置为...

    MyISAM和InnoDB索引引擎的B+树索引实现1

    在数据库管理系统中,索引是一种用于加速查询的重要...综上所述,理解MyISAM和InnoDB的索引实现对于数据库设计和优化至关重要,可以根据具体应用需求选择合适的存储引擎,并合理设计主键,以实现最佳的性能和数据管理。

    数据库引擎 MyISAM 和 InnoDB 对比

    ### 数据库引擎 MyISAM 和 InnoDB 的对比分析 在MySQL数据库系统中,MyISAM与InnoDB是最常被提及的两种存储引擎。这两种引擎在功能、性能以及适用场景上存在显著差异,本文将深入探讨这两者之间的区别,并分析它们...

    mysql DB引擎myisam与innodB

    在 MySQL 数据库系统中,存在多种不同的存储引擎,其中最为人所熟知且广泛使用的两种是 MyISAM 和 InnoDB。这两种存储引擎各自具有独特的特点和适用场景。 #### InnoDB:事务安全与外键支持 InnoDB 是 MySQL 中...

    myisam和innodb的区别

    其中最常用的两种存储引擎分别是MyISAM和InnoDB。本文将详细介绍这两种存储引擎的主要特点及其区别,帮助读者更好地理解它们之间的差异,并根据实际需求选择合适的存储引擎。 #### 二、InnoDB存储引擎详解 InnoDB...

    MyISAM与InnoDB的索引差异

    MySQL中的存储引擎MyISAM和InnoDB在处理索引上有显著的差异,这些差异主要体现在索引的组织方式以及对数据存储的影响上。两者都基于B+树这种高效的索引结构,但具体实现有所不同。 首先,MyISAM的索引采用非聚集...

    MySQL存储引擎中的MyISAM和InnoDB区别详解

    在使用MySQL的过程中对MyISAM和InnoDB这两个概念存在了些疑问,到底两者引擎有何分别一直是存在我心中的疑问。为了解开这个谜题,搜寻了网络,找到了如下信息: MyISAM是MySQL的默认数据库引擎(5.5版之前),由...

    mysql更改引擎(InnoDB,MyISAM)的方法

    mysql默认的数据库引擎是MyISAM,不支持事务和外键,也可使用支持事务和外键的InnoDB。 查看当前数据库的所支持的数据库引擎以及默认数据库引擎 数据库支持的引擎和默认数据库引擎代码: 代码如下:show engines; ...

    MySQL存储引擎MyISAM与InnoDB区别总结整理

    在MySQL中,MyISAM和InnoDB是最常见的两种存储引擎,它们各自有独特的特性和适用场景。 首先,我们来看一下MySQL默认存储引擎的变迁。在MySQL 5.1之前的版本,MyISAM是默认的存储引擎,它以快速读取和较小的内存...

    Mysql 的存储引擎,myisam和innodb的区别

    本文主要探讨两种最常用的存储引擎——MyISAM和InnoDB之间的关键区别。 MyISAM是MySQL早期的默认存储引擎,它以高效读取和快速查询闻名。MyISAM采用表级锁定,这意味着在整个操作过程中,如果一个用户对表进行读取...

    MySQL存储引擎MyISAM与InnoDB的9点区别

    虽然MySQL里的存储引擎不只是MyISAM与InnoDB这两个,但常用的就是它俩了。可能有站长并未注意过MySQL的存储引擎,其实存储引擎也是数据库设计里的一大重要点,那么博客系统应该使用哪种存储引擎呢?下面我们分别来看...

    mysql架构与存储引擎(MySQL逻辑架构、InnoDB引擎、MyISAM引擎、存储引擎选择).docx

    ##### 1、InnoDB引擎 - **基本描述**:InnoDB是MySQL默认的事务型存储引擎,特别适用于需要事务处理的应用场景,具有自动崩溃恢复的能力。 - **架构图解**: - **内存结构**:包括缓冲池(Buffer Pool)、写缓冲区...

    MySql Innodb 引擎特性详解

    5. **支持分区和表空间**:InnoDB引擎支持数据分区和表空间管理,便于管理和优化大规模数据集。 6. **支持外键约束**:与MyISAM相比,InnoDB引擎支持外键约束,有助于维护数据库的完整性。 7. **不支持全文索引*...

    深入探讨:MySQL数据库MyISAM与InnoDB存储引擎的比较

    MySQL有多种存储引擎,MyISAM和InnoDB是其中常用的两种。这里介绍关于这两种引擎的一些基本概念(非深入介绍)。MyISAM是MySQL的默认存储引擎,基于传统的ISAM类型,支持全文搜索,但不是事务安全的,而且不支持外键...

    MySQL存储引擎简介及MyISAM和InnoDB的区别

    本文将重点讨论MyISAM和InnoDB这两个最常用的存储引擎。 MyISAM是MySQL的默认存储引擎之一,特别是在Web应用和数据仓库环境中广泛使用。它的主要优点在于速度快,占用磁盘空间小,对表级锁定,这使得在高并发读取...

    浅谈MyISAM 和 InnoDB 的区别与优化

    在MySQL数据库中,MyISAM和InnoDB是两种常见的存储引擎,它们各自拥有独特的特性和优势,适用于不同的应用场景。了解两者之间的区别,有助于我们根据实际需求做出最佳的选择,并进行有效的优化。 1. 索引类型差异:...

    MySQL内核:InnoDB存储引擎 卷1.pdf.zip

    深入学习《MySQL内核:InnoDB存储引擎 卷1》,读者可以了解到InnoDB的内部工作机制,如如何处理B+树索引、事务的提交与回滚、锁的实现以及内存管理等内容,这对于优化数据库性能、解决并发问题、设计高效的数据模型...

Global site tag (gtag.js) - Google Analytics