mysql 性能

1 单条语句运行时间查询

使用SQL_NO_CACHA 查询不使用缓存,结果也存不进缓存。

set profiling=1;运行语句, 然后show profiles


2.多进程 insert into 语句丢失

 1. 使用insert into tablename values(),(),()...语法。

        2. 如果有索引,批处理插入前先把建索引disable了,插入完成后再从新建索引。

        3. 插入前对表进行加锁,插入完后,再解锁。

        4. 使用插入延迟,当客户使用插入延迟,服务器立刻返回,数据库自己对缓冲区做处理,延迟插入和数据库有关,innodb不支持。

        5.使用 LOAD DATA INFILE,把文件中的数据直接映射成表。这个技术我认为实际上是利用了缓存加批处理,另外加上2、3、4的方式,所以速度超过。但是使用时要注意文件的编码格式。

果存在自增字段,MySQL会维护一个自增锁,和自增锁相关的一个参数为(5.1.22版本之后加入)

innodb_autoinc_lock_mode:可以设定3个值,0,1,2

     0:traditonal (每次都会产生表锁)

     1:consecutive (会产生一个轻量锁,simple insert会获得批量的锁,保证连续插入)

     2:interleaved (不会锁表,来一个处理一个,并发最高
 
 
 
 

3 更改linux 服务器调度引擎,deadline 最适合mysql服务器  echo deadline > /sys/block/sda/queue/scheduler

4 更改numa策略,大部分Numa策略都会造成使用swap,除了mumactl  -interleave=all

5 修改swappiness

cat /proc/sys/vm/swappiness

 sudo gedit /etc/sysctl.conf

  在这个文档的最后加上这样一行:   vm.swappiness=10
6:扩大文件描述符
7:禁用ext4的barrier
8:设置CPU为最大能源模式
9:query_cache 最好别用,如果想用额外缓存,那就用memcache,redis,如果使用了关闭时可要小心;
10 : innodb_buffer_pool_size 是数据和索引缓存地方,越大越好5-6(8);
11:interactive_timeout  服务器在关闭它前一个交互链接上等待行动的秒数,一个交互的客户被定义为对mysql_real_connect()的使用,改为7200;
12:table_open_cache 指定表高速缓存的大小,每当MySQL访问一个表时,如果在表缓冲区中还有空间,该表就被打开并放入其中,这样可以更快地访问表内容。一些资料推荐把这个数值设置为(max_connections* 查询同时用到的表数)。我实践中发现,一般设置为max_connections就没问题了;
13:max_allowed_packet.接受数据包大小;根据情况增加该变量,有时候大的插入和更新会受max_allowed_packet 参数限制,导致写入或者更新失败;
14:skip_name_resolve  详情 http://www.cnblogs.com/ivictor/p/5311607.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小喾

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值