在日常的的开发过程中接触到了SQLServer和MySQL数据库的操作性问题,可能是以前接触的都是SQL Server,才开始接触MySQL,总感觉使用MySQL没有使用SQLserver那么顺手,一些关键的系统函数,比如说开窗、行转列、列转行、自增字段等一系列的问题,虽然最后都找到了替代的方案,但是解决性能问题还是颇费了一些功夫的。对比了一下SQL Server、MySQL在Windows环境下、MySQL在linux环境下的性能,同样的一个存储过程,在存储过程中建立了八个临时表,并循环向每个临时表里插入了十万条数据,字段大概有十二个左右,最后查询出数据,在SQL Server下用了6秒时间,在Linux下的MySQL中用了3秒多的时间,而在Windows环境下的MySQL改为了一千条数据耗费了六十多秒的时间。总的来说性能上的差别还是很大的,下面就来谈谈Linux下的MySQL的配置文件。

设置慢查询时间的长度,以及慢查询日志存放的位置:

long_query_time=1

slow_query_log_file = /var/log/mysql/mysql-slow.log

避免Mysql的外部锁定,减少出错几率,增强稳定性:

skip-external-locking

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

skip-name-resolve

back_log参数的值指出在MySQL暂时停止响应新请求之前,短时间内的多少个请求可以被存,在对堆栈中,如果系统短时间内有很多连接,则需>要增大该参数的值,该参数值指定到来的TCP/IP连接的监听队列的大小。不同的操作系统在这个队列的大小有自己的限制,将back_log设定得高于操作系统的限制将是无效的,其默认值为50,对于LINUX系统而言,推荐设置为小于512的整数:

back_log=1200 binlog_cache_size=64M

索引缓冲区大小,增加它可得到更好的索引处理性能,对于内存在4GB左右的服务器,该参数可设置为256M或384M。如果该参数值设置的过大>反而会使服务器的整体效率降低:

key_buffer_size=512M

设定在网络传输中一次消息传输量的最大值,系统默认值为1MB,最大值是1GB,必须设定为1024的倍数,单位为字节:

max_allowed_packet=64M

设置MySQL每个线程的堆栈大小,默认值足够大,可满足普通操作。可设置范围为128KB至4GB,默认192K:

thread_stack=64M sort_buffer_size=64M

max_connect_errors = 6000 open_files_limit = 65535

table_open_cache=256 max_heap_table_size=16M

设置Thread Cache池中可以缓存的连接池线程最大数量,可设置为0-16384,默认为0。1GB内存我们配置为8,2GB内存我们配置为16,4GB或4GB以上内在我们配置为64:

thread_cache_size=128

指定Mysql查询缓冲区的大小,可以通过在Mysql控制台观察,如果Qcache_lowmem_prunes的值非常大,则表明经常出现缓冲不够的情况,如果 Qcache_hits的值非常大,则表明查询缓冲使用的非常频繁 :

query_cache_size=64M

query_cache_limit=64M

设置内在临时表最大值,如果超过该值,则会将临时表写入磁盘,其范围为1KB至4GB:

tmp_table_size=64M

指定MYSQL允许的最大连接进程数,如果在访问程序时经常出现TOO MANY CONNECTIONS的错误提示,则需要增大该参数值:

max_connections=1500

max_user_connections=1500

指定一个请求的最大连接时间,对于4GB左右内在的服务器来说,可以将其设置为5-10:

wait_timeout=100

该参数取值为服务器逻辑CPU数量*2,比如,服务器有两个物理CPU,每个物理CPU支持HT超线程,所以实际取值4*2=8,这也是目前双四核主流 服务器的配置:

join_buffer_size = 64M

开启该选项可以彻底关闭MYSQL的TCP/IP连接方式,如果WEB服务器是以远程连接的方式访问MYSQL的数据库服务器,则不要开启该选项,否则>将无法正常连接。 skip-networking   抱怨Innodb比MyISAM慢 100倍?那么你大概是忘了调整这个值。默认值1的意思是每一次事务提交或事务外的指令都需要把日志写入(flush) 硬盘,这是很费时的。特别是使用电池供电缓存(Battery backed up cache)时。设成2对于很多运用,特别是从MyISAM表转过来的是可以的>,它的意思是不写入硬盘而是写入系统缓存。日志仍然会每秒flush到硬 盘,所以你一般不会丢失超过1-2秒的更新。设成0会更快一点,但安>全方面比较差,即使MySQL挂了也可能会丢失事务的数据。而值2只会在整个操作系#统 挂了时才可能丢数据:

innodb_flush_log_at_trx_commit=2

这是 InnoDB 存储引擎的事务日志所使用的缓冲区。类似于 Binlog Buffer,InnoDB 在写事务日志的时候,为了提高性能,也是先将信息写>入 Innofb Log Buffer 中,当满足 innodb_flush_log_trx_commit 参数所设置的相应条件(或者日志缓冲区写满)之后,才会将日志写到文>件(或者同步到磁盘)中。可以通过 innodb_log_buffer_size 参数设置其可以使用的最大内存空间:

innodb_log_buffer_size=64M

innodb_buffer_pool_size=64M

innodb_log_file_size=1G

innodb_file_per_table=1

innodb_read_io_threads=10

innodb_write_io_threads=10

innodb_flush_method=O_DIRECT

innodb_io_capacity=1000

innodb_io_capacity_max=1000

innodb_lru_scan_depth=500

innodb_thread_concurrency=0

innodb_autoinc_lock_mode=2

innodb_log_files_in_group=3

innodb_max_dirty_pages_pct=90

innodb_lock_wait_timeout=100

bulk_insert_buffer_size = 16M

innodb_thread_concurrency = 8

innodb_purge_threads = 1

tmp_table_size 的默认大小是 32M。如果一张临时表超出该大小,MySQL产生一个 The table tbl_name is full 形式的错误,如果你做很多 #高级 GROUP BY 查询,增加 tmp_table_size 值:

tmp_table_size=512M

随机读取数据缓冲区使用内存(read_rnd_buffer_size):和顺序读取相对应,当 MySQL 进行非顺序读取(随机读取)数据块的时候,会利用>这个缓冲区暂存读取的数据。如根据索引信息读取表数据,根据排序后的结果集与表进行Join等等。总的来说,就是当数据块的读取需要满足>一定的顺序的情况下,MySQL 就需要产生随机读取,进而使用到 read_rnd_buffer_size 参数所设置的内存缓冲区:

read_rnd_buffer_size=128M

你最好在定义数据库命名规则的时候就全部采用小写字母加下划线的组合,而不使用任何的大写字母:

lower_case_table_names=1

设置校验模式 :

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

默认配置没开查询缓存:

explicit_defaults_for_timestamp

需要记录进制日志的数据库.如果有多个数据库可用逗号分隔,或者使用多个binlog-do-db选项:

binlog-do-db=showeedb

不需要记录进制日志的数据库.如果有多个数据库可用逗号分隔,或者使用多个binlog-do-db选项  :

binlog-ignore-db=mysql

需要进行同步的数据库.如果有多个数据库可用逗号分隔,或者使用多个replicate-do-db选项:

replicate-do-db=showeedb

不需要同步的数据库.如果有多个数据库可用逗号分隔,或者使用多个replicate-ignore-db选项:

replicate-ignore-db=mysql,test

同步参数:

server-id=1

log_bin=/var/log/mysql/mysql-bin

保证slave挂在任何一台master上都会接收到另一个master的写入信息:

log-slave-updates

sync_binlog=1

auto_increment_offset=1

auto_increment_increment=2

过滤掉一些没什么大问题的错误:

slave-skip-errors=all

mysql linux文件_MySQL在Linux系统下配置文件详解相关推荐

  1. mysql简易购物车系统_基于PHP+Mysql简单实现了图书购物车系统的实例详解

    基于PHP+Mysql简单实现了图书购物车系统的实例详解,购物车,这是,页面,简单,图书 基于PHP+Mysql简单实现了图书购物车系统的实例详解 易采站长站,站长之家为您整理了基于PHP+Mysql ...

  2. linux 群组分类,Linux文件权限与群组修改命令详解

    在Linux中,一切皆为文件(目录也是文件),每个文件对用户具有可读(read).可写(write).可执行(execute)权限.目录的执行操作表示是否有权限进入该目录,文件的可执行表示是否可以运行 ...

  3. Linux卸载搜狐,双系统删除教程详解:Windows(linux)双系统,教你如何删除其中一个!...

    3. 随后,点击"引导",可以设置开机的启动系统了 4. 假设我们要删除win10系统,那么我们就将win10操作系统开机引导删除,选择win10然后选择"删除" ...

  4. mysql master 配置_MySQL双Master配置的方法详解

    刚刚抽空做了一下MYSQL 的主主同步.把步骤写下来,至于会出现的什么问题,以后随时更新.这里我同步的数据库是TEST1.环境描述.主机:192.168.0.231(A)主机:192.168.0.23 ...

  5. 给mysql 授权 命令_mysql中授权命令grant用法详解:

    mysql中授权命令grant用法详解: mysql中可以给你一个用户授予如select,insert,update,delete等其中的一个或者多个权限,主要使用grant命令,用法格式为: gra ...

  6. mysql escape关键字_MySQL中ESCAPE关键字的用法详解

    MySQL转义 转义即表示转义字符原来的语义,一个转义字符的目的是开始一个字符序列,使得转义字符开头的该字符序列具有不同于该字符序列单独出现时的语义. MySQL中,转义字符以"\" ...

  7. Linux系统下LightDM详解

    简介 LightDM(Light Display Manager)是一个全新的轻量级Linux桌面显示管理器,而传统的Ubuntu是使用GNOME桌面标准的GDM. LightDM是一个跨桌面显示管理 ...

  8. linux执行lsof命令_linux系统 lsof命令详解

    简介 lsof(list open files)是一个列出当前系统打开文件的工具.在linux环境下,任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件.所以如传输控 ...

  9. linux给内存卡分区,Android系统手机内存卡分区详解

    这两天刷了2.2版本之后换了个内存卡,问题来了,需要把内存卡分区,下面就让把这两天分区的经验分享一下.不对的地方希望各位能指正,感谢.这里以我的国行G2作为说明,刷的是啊兴的2.2版本.参照了G1的分 ...

最新文章

  1. abstract class与interface的差异
  2. python2和pytho3切换_python2和pytho3切换_Python2和Python3共存安装
  3. POJ3237 树的维护
  4. 在SQL Server里为什么我们需要更新锁
  5. 0831 - 每晚放松一刻
  6. Framework类库
  7. 服务器系统测试,服务器系统整合测试
  8. SQL server Date函数之CONVERT()函数
  9. 一个小玩意 PHP实现微信红包金额拆分试玩
  10. 青龙扩展--九章头条
  11. 高通 qca-wifi 移植
  12. 一、搜索引擎篇-揭开es神秘的面纱
  13. 华为哪款手机是鸿蒙系统_华为鸿蒙系统不会用于手机?
  14. 【通信】经PPM调制的超宽带信号经斯白噪声信道的系统matlab仿真
  15. 承包了我今日笑点的AI“文心一言”,被质疑是“套壳”?
  16. 贪心算法 Greedy
  17. mysql宕机日志查询_Mysql容器异常宕机
  18. C++ 偏微分数值计算库_SymPy 符号计算基本教程
  19. PAP和CHAP认证是什么
  20. 计算机二级真题期刊论文模板,杂志文章格式模板.doc

热门文章

  1. 节约内存:Instagram的Redis实践(转)
  2. 模板标签及模板的继承与引用
  3. tar只解压tar包中某个文件
  4. Python数据分析之pandas入门
  5. PyCharm使用技巧(六):Regullar Expressions的使用
  6. SqlServer图形数据库初体验
  7. Cloudera Manager内部结构、功能包括配置文件、目录位置等
  8. 选择更安全的方式执行你的puppet更新
  9. 在 SharePoint 2013 中选择正确的 API 集
  10. iOS.UITableView.SectionIndex