MySQL编译参数优化

Linux下对Nginx编译安装的时候,如果去掉debug选项,生成的目标文件将会小很多,运行效率将会高很多。MySQL像Nginx及很多Linux软件一样,有这样的选项可以去掉或者优化,可以使编译的目标文件很小,提高运行效率和减少资源占用。以下对这些选项做个介绍,不足之处请大家多多补充,共同完善:

static参数,静态链接

参数使用方法:

1--with-client-ldflags=-all-static
2--with-mysqld-ldflags=-all-static

静态链接提高13%性能

pgcc参数,Intel处理器优化标记

使用方法: 命令行设置环境变量

1CFLAGS="-O3 -mnocona -mstack-align-double"
2CXX=gcc
3CXXFLAGS="-O3 -mnocona -mstack-align-double -felide-constructors -fno-exceptions -fno-rtti"

如果是Intel处理器,使用pgcc提高1%性能

64位平台的编译环境变量:

1CFLAGS="-O3 -fPIC -mnocona -mstack-align-double"
2CXX=gcc
3CXXFLAGS="-O3 -mnocona -mstack-align-double -felide-constructors -fno-exceptions -fno-rtti"
4
5CFLAGS="-O3"
6CXX=gcc
7CXXFLAGS="-O3 -felide-constructors -fno-exceptions -fno-rtti -fomit-frame-pointer -ffixed-ebp"

CFLAGS设置参见http://gcc.gnu.org/onlinedocs/gcc-4.4.0/gcc/i386-and-x86_002d64-Options.html#i386-and-x86_002d64-Options

Unix Socket,Unix套接字

参数设置

1--with-unix-socket-path=/usr/local/mysql/tmp/mysql.sock

使用Unix套接字链接提高7.5%性能,所以在Windows下Mysql性能肯定不如Unix下面。PHP-CGI在使用时也是一样的,使用端口监听模式不如使用Unix套接字模式效率高。

–enable-assembler参数,汇编x86的普通操作符

–enable-assembler参数允许编译x86(和sparc)版本普通操作符, 对多个方面的性能产生直接影响.

with-big-tables参数,大记录数表支持

不使用该参数时,MyISAM表的最大记录数被限制到42亿(2^32次方)条。编译时增加–with-big-tables参数,可以将最大记录数增加到((2^32次方)^2次方)条。

其他几条参数

  1. –with-ssl
  2. –with-extra-charsets=complex字符支持
  3. –enable-thread-safe-client #Compile the client with threads. 让客户端支持线程的意思
  4. –with-embedded-server #编译成embedded MySQL library (libmysqld.a),
  5. –enable-local-infile #让mysql支持从本地文件导入数据库

    如果不使用该参数,在导入本地文件时,将会出错:

    1load data local infile '/usr/test' into table test fields terminated by ' ';
    2ERROR 1148 (42000): The used command is not allowed with this MySQL version)
  6. –with-plugins=innobase存储引擎

    Mysql5.1开始,编译添加innodb插件就从 –with-innodb 改成了 –with-plugins=innobase

  7. –with-plugins=PLUGIN[[[,PLUGIN..]]]参数,插件编译参数

    该参数将需要编译到MySQl的插件包含了,不使用该参数时,不编译任何插件。

    如果多个插件,可以写成:–with-plugins=partition,blackhole,heap,innobase,myisam,ndbcluster 用逗号分开

编译安装示例:

01./configure --prefix=/web/mysql #指定安装目录
02--without-debug #去除debug模式
03--enable-local-infile #让mysql支持从本地文件导入数据库
04--with-big-tables #打开超大数据表支持
05--with-charset=utf8 #默认utf8字符集
06--with-extra-charsets=gb2312 #添加gb2312中文字符支持
07--with-collation=utf8_general_ci --with-extra-charsets=all
08--with-mysqld-user=mysql
09--with-plugins=partition,myisammrg #同时编译partition myisammrg插件
10--with-unix-socket-path=/usr/local/mysql/tmp/mysql.sock #设置unix socket路径
11--without-ndb-debug #去掉集群debug模式
12--enable-assembler #使用一些字符函数的汇编版本
13--without-isam #去掉isam表类型支持 现在很少用了 isam表是一种依赖平台的表
14--without-innodb #去掉innodb表支持 innodb是一种支持事务处理的表,适合企业级应用,对于普通应用来说过于消耗资源,(本人注:不过这一点我本人持保留意见)
15--with-pthread #强制使用pthread库(posix线程库)
16--enable-thread-safe-client #以线程方式编译客户端
17--with-client-ldflags=-all-static
18--with-mysqld-ldflags=-all-static #以纯静态方式编译服务端和客户端
19make
20make install
21scripts/mysql_install_db #生成mysql用户数据库和表文件
22 
23cp support-files/mysql.server /etc/init.d/mysqld #copy启动的mysqld文件
24chmod 700 /etc/init.d/mysqld
25cd /web
26chmod 750 mysql -R
27chgrp mysql mysql -R
28chown mysql mysql/var -R
29cd /web/mysql/libexec
30cp mysqld mysqld.old
31strip mysqld
32chkconfig --add mysqld
33chkconfig --level 345 mysqld on
34service mysqld start
35ln -s /web/mysql/bin/mysql /sbin/mysql
36ln -s /web/mysql/bin/mysqladmin /sbin/mysqladmin

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值