
正文
mysql怎么改参数 mysql修改数据库参数
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
学会设置五大类MySQL参数
(一)连接
连接通常来自Web服务器 下面列出了一些与连接有关的参数 以及该如何设置它们
max_connections
这是Web服务器允许的最大连接数 记住每个连接都要使用会话内存(关于会话内存 文章后面有涉及)
max_packet_allowed
最大数据包大小 通常等于你需要在一个大块中返回的最大数据集的大小 如果你在使用远程mysqldump 那它的值需要更大
aborted_connects
检查系统状态的计数器 确定其没有增长 如果数量增长说明客户端连接时遇到了错误
thread_cache_size
入站连接会在MySQL中创建一个新的线程 因为MySQL中打开和关闭连接都很廉价 速度也快 它就没有象其它数据库 如Oracle那么多持续连接了 但线程预先创建并不会节约时间 这就是为什么要MySQL线程缓存的原因了
如果在增长请密切注意创建的线程 让你的线程缓存更大 对于 或 的thread_cache_size 内存占用也不多
(二)查询缓存
MySQL中的缓存查询包括两个解析查询计划 以及返回的数据集 如果基础表数据或结构有变化 将会使查询缓存中的项目无效
query_cache_min_res_unit
MySQL参数中query_cache_min_res_unit查询缓存中的块是以这个大小进行分配的 使用下面的公式计算查询缓存的平均大小 根据计算结果设置这个变量 MySQL就会更有效地使用查询缓存 缓存更多的查询 减少内存的浪费
query_cache_size
这个参数设置查询缓存的总大小
query_cache_limit
这个参数告诉MySQL丢掉大于这个大小的查询 一般大型查询还是比较少见的 如运行一个批处理执行一个大型报表的统计 因此那些大型结果集不应该填满查询缓存
qcache hit ratio = qcache_hits / (qcache_hits + _select)
使用
SQL show status like qcache% ;
SQL show status like _% ;
找到这些变量
average query size = (query_cache_size qcache_free_memory)/qcache_queries_in_cache
使用
SQL show variables like query% ;
qcache_* status variables you can get with:
SQL show status like qcache% ;
获取query_cache_size的值
(三)临时表
内存速度是相当快的 因此我们希望所有的排序操作都在内存中进行 我们可以通过调整查询让结果集更小以实现内存排序 或将变量设置得更大
tmp_table_size
max_heap_table_size
无论何时在MySQL中创建临时表 它都会使用这两个变量的最小值作为临界值 除了在磁盘上构建临时表外 还会创建许多会话 这些会话会抢占有限制的资源 因此最好是调整查询而不是将这些参数设置得更高 同时 需要注意的是有BLOB或TEXT字段类型的表将直接写入磁盘 深入浅出MySQL双向复制技术
(四)会话内存
MySQL中每个会话都有其自己的内存 这个内存就是分配给SQL查询的内存 因此你想让它变得尽可能大以满足需要 但你不得不平衡同一时间数据库内一致性会话的数量 这里显得有点黑色艺术的是MySQL是按需分配缓存的 因此 你不能只添加它们并乘以会话的数量 这样估算下来比MySQL典型的使用要大得多 最佳做法是启动MySQL 连接所有会话 然后继续关注顶级会话的VIRT列 mysqld行的数目通常保持相对稳定 这就是实际的内存总用量 减去所有的静态MySQL内存区域 就得到了实际的所有会话内存 然后除以会话的数量就得到平均值
read_buffer_size
缓存连续扫描的块 这个缓存是跨存储引擎的 不只是MyISAM表
sort_buffer_size
执行排序缓存区的大小 最好将其设置为 M M 然后在会话中设置 为一个特定的查询设置更高的值
join_buffer_size
执行联合查询分配的缓存区大小 将其设置为 M M大小 然后在每个会话中再单独按需设置
read_rnd_buffer_size
用于排序和order by操作 最好将其设置为 M 然后在会话中可以将其作为一个会话变量设置为更大的值
(五)慢速查询日志
慢速查询日志是MySQL很有用的一个特性
log_slow_queries
MySQL参数中log_slow_queries参数在f文件中设置它 将其设置为on 默认情况下 MySQL会将文件放到数据目录 文件以 主机名 slow log 的形式命名 但你在设置这个选项的时候也可以为其指定一个名字
long_query_time
默认值是 秒 你可以动态设置它 值从 到将其设置为on 如果数据库启动了 默认情况下 日志将关闭 截至 和安装了Google补丁的版本 这个选项可以以微秒设置 这是一个了不起的功能 因为一旦你消除了所有查询时间超过 秒的查询 说明调整非常成功 这样可以帮助你在问题变大之前消除问题SQL
log_queries_not_using_indexes
开启这个选项是个不错的主意 它真实地记录了返回所有行的查询
小结
lishixinzhi/Article/program/MySQL/201311/29371
相关问答
Q1: 如何修改mysql配置文件中的参数?
1、编辑MySQL(和PHP搭配之最佳组合)配置文件: windows环境中:%MySQL_installdir%\my.ini //一般在MySQL安装目录下有my.ini即MySQL的配置文件。 linux环境中:/etc/my.cnf 在[MySQLd]配置段添加如下一行: skip-grant-tables 保存退出编辑。 2、然后重启MySQL服务 windows环境中: net stop MySQL net start MySQL linux环境中: /etc/init.d/MySQLd restart 3、设置新的ROOT密码 然后再在命令行下执行: MySQL-uroot -p MySQL 直接回车无需密码即可进入数据库了。 现在我们执行如下语句把root密码更新为7758521: update user set password=PASSWORD("7758521") where user='root'; quit 退出MySQL。 4、还原配置文件并重启服务 然后修改MySQL配置文件把刚才添加的那一行删除。 再次重起MySQL服务,密码修改完毕。 用新密码7758521试一下吧,又能登入MySQL的感觉就是不一样吧?
采纳哦
Q2: Mysql修改max_allowed_packet参数
写入或读取MySQL报错超出 max_allowed_packet 的问题。
如果出现上图提示的错误,就需要修改 max_allowed_packet
先查看一下参数
有两种:
show variables like '%max_allowed_packet%';
select @@max_allowed_packet;
最大为1G,最小为1K
设置完成时候,重启一下mysql服务即可
在安装目录找到my.ini打开,在[mysqld]标签下设置max_allowed_packet,按照自己想要设置的大小设置就好了
例如:max_allowed_packet=100M
设置完成时候记得重启一下mysql服务才能生效
参考博客:
Q3: 如何动态修改Mysql的配置参数
登入mysql:
mysql -h localhost -u root -p
然后会让输入密码
查看当前配置参数(wait_timeout为例):
show session variables like '%wait_timeout%'; (或去掉session也一样)这是当前会话配置参数
现在我们来改这个值:
set wait_timeout=90;
然后我们一起再查看下当前配置参数:
show variables like '%wait_timeout%';
这是修改当前会话配置,当退出再新起一个会话时就会恢复原样。
想在所有会话都有效可以设置全局配置,参数把session改为global就可以了
set global wait_timeout=90;后再查看
show global variables like '%wait_timeout%';
再退出后重新进入看看,值还是在。
关于mysql怎么改参数和mysql修改数据库参数的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。






