Mysql技术

MySQL性能优化之open_files_limit,table_open_cache和max_connections配置关系

MySQL的变量open_files_limit,table_open_cache和max_connections是相互关联的。如果对有些变量进 行了设置,有的变量没有设置,mysql会根据一定的计算公式进行计算得出其他的,当然有些时候会触发mysql的一些警告来。

本文探讨的均基于Linux系统

首先,mysql会基于 max_connections 和 table_open_cache 的值计算最低需要的文件打开描述符的数量。至于其他变量,如果没有再my.cnf中配置或者命令行中指定,它将使用默认值。

/* MyISAM requires two file handles per table. */
    wanted_files= 10+max_connections+table_cache_size*2;
其次,它会基于 open_files_limit 检查实际能分配多少数值。这里它可分配的最大数值为 max_connections 5倍,然后三者取最大值。


» 阅读全文

关键词: mysql性能优化

mysql in 排序问题:可以按in里面的顺序来排序

mysql in 排序问题是一个问题,但是在遇到问题的时候就发现问题了,有时候不是外面想要的东西。譬如,有个场景,一个几万条记录的表,主键是 id,我想从表中取 id 为 30,20,80,40 的几条记录。
注意,30,20,80,40,是我预期的顺序,我希望 MySQL 按这样的我提供ID顺序返回记录。
于是我这样写 SQL:
SELECT * FROM my_table WHERE id IN (30, 20, 80, 40);
结果是,他没有按我给的顺序返回。
怎么办?
查到了 FIELD() 函数。
FIELD(str,str1,str2,str3,...)
Returns the index (position) of str in the str1, str2, str3, ... list. Returns 0 if str is not found.

» 阅读全文

关键词: mysql+in+排序

python多线程备份mysql数据工具:mysqlpdump使用方法

mysql的备份工具有很多,但是很多都备份比较慢,那有没办法多线程进行备份呢?分享一个python多线程备份mysql数据工具:mysqlpdump使用方法:

mysqlpdump自己的介绍:


MySQL Parallel Dump

Multi threaded mysqldump is not an utopia any more. mysqlpdump can dump all your tables and databases in parallel so it can be much faster in systems with multiple cpu’s.

It stores each table in a different file by default. It can also generate the dump to stdout although this is not recommended because it can use all the memory in your system if your tables are big.

看说明,mysqlpdump 默认就是采用分表备份的,而且多线程,充分利用cpu。这个还有说明,就是说,mysqlpdump可以利用内存直接将备份输出出来,但是对于大表不建议这么干,可能会挂掉的。


mysqlpdump需要的系统需求:

» 阅读全文

关键词: mysqlpdump , 备份mysql , python

mysql脚本优化工具tuning-primer.sh使用教程说明

今天推荐给大家一个不错的脚本tuning-primer.sh,可以帮助我们去查看一下msyql的运行情况,产生报告和给出一些建议,我们可以根据这些建议,结合mysql服务器的实际情况,对mysql进行优化。

一,下载以及使用

1,wget 

2,将tuning-primer.sh拷贝到my.cnf的同级目录

3,sh tuning-primer.sh 或者 chmod +x tuning-primer.sh 然后在 ./tuning-primer.sh 二者没什么区别

» 阅读全文

关键词: tuning-primer.sh , mysql优化

Mysql配置文件my.cnf参数详解,Mysql优化配置

1、配置参数

mysql有两种途径途径了解其的配置参数,一个是MySQL交互模式下的命令SHOW  VARIABLES,一个使用mysqladmin variables 查询。

MySQL的配置参数分为2种,全局的和局部的。局部的配置变量可以在每次会话中自己更改。

从MySQL 4.0以后开始,在SHOW VARIABLES中显示的参数,大部分可以动态使用SET命令进行更改。

基本参数配置:

» 阅读全文

关键词: mysql优化 , mysql

【MySQL】ERROR : (2006, 'MySQL server has gone away') 解决方法

mysql出现ERROR : (2006, 'MySQL server has gone away') 的问题意思就是指client和MySQL server之间的链接断开了。

造成这样的原因一般是sql操作的时间过长,或者是传送的数据太大(例如使用insert ... values的语句过长, 这种情况可以通过修改max_allowed_packed的配置参数来避免,也可以在程序中将数据分批插入)。

产生这个问题的原因有很多,总结下网上的分析:

原因一. MySQL 服务宕了

判断是否属于这个原因的方法很简单,进入mysql控制台,查看mysql的运行时长

» 阅读全文

关键词: mysql

【shell脚本】MySQL定时批量检查表repair和优化表optimize table

shell脚本mysql定时批量检查表repair和优化表optimize table

» 阅读全文

关键词: 优化表 , shell脚本 , mysql

MySQL大数据库表记录的删除及优化表操作心得分享

mysql大数据库表记录的删除及优化表操作心得分享

近几日对公司数据库一个近超过2千万级数据表进行删除优化处理, 发现对一个千万级数据表进行删除记录及进行optimize操作时,会极其的耗时间和空间。

删除数据库的时候要分批删除,譬如每次删除20~30万,不然一次500万删除性能一下子急剧下降,删除极其慢,甚至导致卡死,所以删除大表的时候要注意分表,可以shell 分批删数据。

删除记录时,MyISAM表会留下空洞碎片,碎片多了会持续降低MySQL性能。如果使用optimize操作的话,注意,MySQL会先生成一个TMD文件;完成操作后才会把这个文件删除。这个过程可能比较漫长......

优化1G 左右的Mysql碎片空间的,大约需要10分钟左右时间。

所以再设计表和存储记录时,就应当想好这个表的记录会不会有大量记录;如果是的话应该要先设计好应对方案,水平切分或垂直切分。

其实,也算不上什么经验吧,呵呵,算是一个心得。


关键词: 优化表 , mysql