文档章节

服务器性能优化(四):mysql数据库调优

stone_
 stone_
发布于 2015/10/29 16:26
字数 4219
阅读 138
收藏 0
点赞 0
评论 0

加快mysql服务器的运行速度的方法,按照效率从低到高的依次为:

         1.  替换有问题的硬件

         2. 对mysql进程的设置进行调优

         3. 对查询进行优化

    1) 记录慢查询

     在一个 SQL 服务器中,数据表都是保存在磁盘上的。索引为服务器提供了一种在表中查找特定数据行的方法,而不用搜索整个表。当必须要搜索整个表时,就称为表扫描。通常来说,您可能只希望获得表中数据的一个子集,因此全表扫描会浪费大量的磁盘 I/O,因此也就会浪费大量时间。当必须对数据进行连接时,这个问题就更加复杂了,因为必须要对连接两端的多行数据进行比较。

     配置mysqld将这些慢查询记录到指定的慢查询日志中,通过查看慢查询日志可以定位到可能有问题的sql语句.启用慢查询日志需在my.cnf文件中添加如下设置.   

[mysqld]

; enable the slow query log, default 10 seconds

log-slow-queries=/opt/mysql/logs/mysql-slow.log

; log queries taking longer than 2 seconds

long_query_time = 2

; log queries that don't use indexes even if they take less than long_query_time

; MySQL 4.1 and newer only

log-queries-not-using-indexes


 这3个设置一起使用,可以记录执行时间超过2秒和没有使用索引的查询. 慢查询日志会存放在 /opt/mysql/logs/mysql-slow.log.   

  阅读慢查询日志使用mysqldumpslow的命令进行。指定日志文件的路径,就可以看到一个慢查询排序后的列表,并且显示它们在日志中出现的次数.一个非常有用的特性是mysqldumpslow在比较结果之前,会删除任何用户指定的数据,因此对同一个查询的不同调用被记为一次,这样可以找出工作量最多的查询.

/opt/mysql/bin/mysqldumpslow -s c  -t 20 mysql-slow.log   //慢查询中访问次数最多的20条sql

/opt/mysql/bin/mysqldumpslow -s r  -t 20 mysql-slow.log   //返回记录结果集最多的20条sql

-s.    是order的排序,分别按照query的次数,时间,lock时间和返回的记录数来排序.

-t ,   是top  n 的意思,就是返回 前面多少条数据。


显示结果如下:


Count: 1147605  Time=0.01s (7931s)  Lock=0.00s (107s)  Rows=0.0 (984), wcontact[wcontact]@[172.16.236.115]

select Fuid, Fcompany_id from relation_company where Ftime >= N and Ftime <= N order by Fuid limit N,N

Count: 108878  Time=0.03s (2792s)  Lock=0.00s (5s)  Rows=1.0 (108878), wcontact[wcontact]@2hosts


SELECT COUNT(*) FROM msg_index WHERE Fobj_uid=N AND Funread=N AND Fdel=N

Count: 23142  Time=0.04s (1012s)  Lock=0.00s (1s)  Rows=15.7 (363685), wcontact[wcontact]@[172.16.236.115]


  select Fcompany_id, count(*) num from relation_company where Ftime > N and Ftime <= N group by Fcompany_id limit N,N

............

对相应的sql语句进行优化:

例如   

SELECT COUNT(*) FROM msg_index WHERE Fobj_uid=N AND Funread=N AND Fdel=N

表结构:

CREATE TABLE `msg_index` (

  `Fid` int(11) NOT NULL AUTO_INCREMENT COMMENT '短消息编号',

  `Fmsg_id` int(11) NOT NULL DEFAULT '0' COMMENT '消息ID',

  `Fuid` bigint(20) NOT NULL DEFAULT '0' COMMENT '发送者UID',

  `Fobj_uid` bigint(20) NOT NULL DEFAULT '0' COMMENT '接收者UID',

  `Ftype` tinyint(3) NOT NULL DEFAULT '0' COMMENT '0发送 1接收',

  `Funread` tinyint(3) NOT NULL DEFAULT '0' COMMENT '新短消息',

  `Ftime` bigint(20) NOT NULL DEFAULT '0' COMMENT '发送时间',

  `Fdel` tinyint(3) NOT NULL DEFAULT '0' COMMENT '删除状态',

  PRIMARY KEY (`Fid`),

  KEY `ft` (`Fuid`,`Fobj_uid`),

  KEY `taf` (`Ftime`,`Ftype`)

) ENGINE=MyISAM AUTO_INCREMENT=163376 DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC


通过explain查看索引使用情况

mysql> explain SELECT COUNT(*) FROM msg_index WHERE Fobj_uid=12 AND Funread=1 AND Fdel=0;


+----+-------------+-----------+------+---------------+------+---------+------+------+-------------+


| id | select_type | table     | type | possible_keys | key  | key_len | ref  | rows | Extra       |


+----+-------------+-----------+------+---------------+------+---------+------+------+-------------+


|  1 | SIMPLE      | msg_index | ALL  | NULL          | NULL | NULL    | NULL | 3775 | Using where |


+----+-------------+-----------+------+---------------+------+---------+------+------+-------------+


1 row in set (0.00 sec)


可以看到该sql语句未用到索引,导致了全表扫描. 故因将联合索引 `ft`,拆分成2个索引.


alter table msg_index drop index `ft`;

alter table msg_index add index `Fuid`(`Fuid`);

alter table msg_index add index `Fobj_uid`(`Fobj_uid`); 


2).对mysqld进程参数进行调优

       1.对查询进行缓存 

        在/opt/mysql/my.cnf添加如下的参数:

###query_cache###

query_cache_size = 64M      //启用64M查询缓存

query_cache_type = 1

query_cache_limit = 2M

query_cache_min_res_unit = 4K

启用查询缓存之后,看它是否有效使用: 


mysql> show status  like 'qcache%';


+-------------------------+----------+


| Variable_name           | Value    |


+-------------------------+----------+


| Qcache_free_blocks      | 7321     |

| Qcache_free_memory      | 33249712 |

| Qcache_hits             | 17036563 |

| Qcache_inserts          | 15195159 |

| Qcache_lowmem_prunes    | 3166865  |

| Qcache_not_cached       | 370185   |

| Qcache_queries_in_cache | 28664    |

| Qcache_total_blocks     | 64727    |


+-------------------------+----------+


8 rows in set (0.00 sec)


上表中一些变量的解释:


Qcache_free_blocks

缓存中相邻内存块的个数。数目大说明可能有碎片。FLUSH QUERY CACHE 会对缓存中的碎片进行整理,从而得到一个空闲块。


Qcache_free_memory

缓存中的空闲内存。


Qcache_hits

每次查询在缓存中命中时就增大。


Qcache_inserts

每次插入一个查询时就增大。命中次数除以插入次数就是不中比率;用 1 减去这个值就是命中率。在上面这个例子中,大约有 87% 的查询都在缓存中命中。


Qcache_lowmem_prunes

缓存出现内存不足并且必须要进行清理以便为更多查询提供空间的次数。这个数字最好长时间来看;如果这个数字在不断增长,就表示可能碎片非常严重,或者内存很少。(上面的free_blocks 和 free_memory 可以告诉您属于哪种情况)。


Qcache_not_cached

不适合进行缓存的查询的数量,通常是由于这些查询不是 SELECT 语句。


Qcache_queries_in_cache

当前缓存的查询(和响应)的数量。


Qcache_total_blocks

缓存中块的数量。

间隔几秒显示这些变量就可以看出区别,这可以帮助确定缓存是否正在有效地使用。


 2.强制限制


  可以在mysqld中强制来确保系统负载不会导致系统资源耗尽.

max_connections = 800 

wait_timeout = 15

max_connect_errors = 200

     max_connections 是设置连接最大数,确保只建立服务器允许数目的连接.确定目前建立的最大连接数,可以执行show status like 'max_used_connections'.


mysql> show status like 'max_used_connections';


+----------------------+-------+


| Variable_name        | Value |


+----------------------+-------+


| Max_used_connections | 26    |


+----------------------+-------+


1 row in set (0.00 sec)


第 2 行告诉 mysqld 终止所有空闲时间超过 15 秒的连接。在 LAMP 应用程序中,连接数据库的时间通常就是 Web 服务器处理请求所花费的时间。有时候,如果负载过重,连接会挂起,并且会占用连接表空间。如果有多个交互用户或使用了到数据库的持久连接,那么将这个值设低一点并不可取!

最后一行是一个安全的方法。如果一个主机在连接到服务器时有问题,并重试很多次后放弃,那么这个主机就会被锁定,直到 FLUSH HOSTS 之后才能运行。默认情况下,10 次失败就足以导致锁定了。将这个值修改为 100 会给服务器足够的时间来从问题中恢复。如果重试 100 次都无法建立连接,那么使用再高的值也不会有太多帮助,可能它根本就无法连接。


    3.表缓存.


  数据库中每个表都可以表示为磁盘上的一个文件,必须先打开,后读取。为了加快从文件中读取数据,mysqld会对这些打开的文件进行缓存。其最大数目的是由/opt/mysql/my.cnf中的table_cache指定.

###表缓存

table_cache= 1024

  显示打开表的活动情况:

  mysql> show status like 'open%tables';


+---------------+-------+


| Variable_name | Value |


+---------------+-------+


| Open_tables   | 287   |


| Opened_tables | 12    |


+---------------+-------+


2 rows in set (0.00 sec)

 上述说明:  目前有287表是打开的,有12个表是需要打开的,因为缓存中已经没有可用的文件描述符了。 如果Opened_tables随着运行show status命令而快速增加时,说明缓存的命中率不够.如果Opened_tables比table_cache设置小很多,就说明该值太大.


   4. 线程的缓存

   所说线程缓存,就是mysqld早接收连接时会根据需要生成线程.在一个连接变化很快的繁忙服务器上,对线程进行缓存有助于可以加快最初的连接.

   显示线程使用的统计信息:


mysql> show status like 'threads%';


+-------------------+---------+


| Variable_name     | Value   |


+-------------------+---------+


| Threads_cached    | 0       |


| Threads_connected | 68      |


| Threads_created   | 1359226 |


| Threads_running   | 1       |


+-------------------+---------+


上述中最重要的时 Threads_created值,每次mysqld需要创建一个新线程时,这个值都会增加。如果这个值随着show status命令而快速增加,就应该尝试增大线程缓存.


###线程缓存


Thread_cache    16


    5.关键字缓存区(myisam)


     关键字缓存区是保存myisam表的索引块.在联想情况下,对于这些块的请求应该来自于内存,而非磁盘.如何确定有多少块是从磁盘读取,有多少块是从内存读取的.


mysql> show status like 'key_read%';


+-------------------+------------+


| Variable_name     | Value      |


+-------------------+------------+


| Key_read_requests | 2367514011 |


| Key_reads         | 652489     |


+-------------------+------------+


2 rows in set (0.00 sec)


Key_reads代表命中磁盘的请求次数,key_read_requests是总数.命中磁盘的次数占总数的 652489 /2367514011 = 0.0002756.大约在1000个请求中有0.3次不会命中内存.如果该值(0.3)超过1时,就应该考虑


增大关键字缓存区.key_buffer = 2G会将缓存区设置为2G.


###MyISAM引擎参数###


key_buffer_size=2G


key_cache_block_size=1024


read_buffer_size=32M


read_rnd_buffer_size=32M


myisam_sort_buffer_size=2M


   6.临时表的使用


  临时表可以在高级查询中使用, 其中数据在进一步进行处理(group by )之前, 都必须先保存在临时表中.理想情况下,在内存中创建临时表,如果临时表变的太大,就需要写入磁盘中.


mysql> show status like 'created_tmp%';


+-------------------------+-------+


| Variable_name           | Value |


+-------------------------+-------+


| Created_tmp_disk_tables | 0     |


| Created_tmp_files       | 746   |


| Created_tmp_tables      | 0     |


+-------------------------+-------+


3 rows in set (0.00 sec)


每次使用临时表都会增大 Created_tmp_tables;基于磁盘的表也会增大 Created_tmp_disk_tables。对于这个比率,并没有什么严格的规则,因为这依赖于所涉及的查询。长时间观察 Created_tmp_disk_tables 会显示所创建的磁盘表的比率,您可以确定设置的效率。 tmp_table_size 和 max_heap_table_size 都可以控制临时表的最大大小,因此请确保在 my.cnf 中对这两个值都进行了设置。


优化查询语句时候,要避免使用临时表,如果避免不了的话,一定要保证临时表存在内存中。如果你有很多group by语句,并且有很多内存的话,那就增大tmp_table_size和max_heap_table_size的值.


一般遵循的的公式:  


Created_tmp_disk_tables/Created_tmp_tables<5%。


   7.排序缓存区


   当mysql进行排序时,就会在磁盘上读取数据时分配一个缓存区来存放这些数据行.如果要排序的数据太大,那么数据就要存放在磁盘上的临时文件中,并再次进行排序。如果sort_merge_passes状态量很大,这就指示磁盘的活动情况.

mysql> SHOW STATUS LIKE "sort%";


+-------------------+---------+


| Variable_name     | Value   |


+-------------------+---------+


| Sort_merge_passes | 1       |


| Sort_range        | 79192   |


| Sort_rows         | 2066532 |


| Sort_scan         | 44006   |


+-------------------+---------+ 


4 rows in set (0.00 sec)

如果sort_merge_passes很大.就表示要注意sort_buffer_size。  sort_buffer_size=16M将排序缓存区设置为16M.

###排序缓存区   


sort_buffer_size=16M


    8.innodb参数


        1)  innodb_buffer_pool_size 

          对于innodb表来说,innodb_buffer_pool_size的作用就相当于key_buffer_size相对于myisam一样.innodb使用该参数指定大小的内存来缓冲数据和索引.对于单独的mysql数据库服务器,最大可以把该值设置成物理内存的80%。 


        2)innodb_additional_mem_pool_size

        该参数指定Innodb用来存储数据字典和其他内部数据结构的内存池大小。缺省值为1M。对于 2G内存的服务器推荐值为 20M.


        3)innodb_log_buffer_size

         推荐值为8M。


        4)innodb_log_file_size 

         推荐值是 innodb_buffer_pool_size的25%.


        5) innodb_flush_log_at_trx_commit

        该值指定innodb记录日志的方式.如果设置为1,则每个事务提交的时候,mysql都会将事务日志写入磁盘.如果设置为0或2,则每秒将日志写入磁盘一次.


        6) innodb_file_per_table

        将该值设置为1时,则innodb表将使用独立的表空间.


###Innodb引擎参数###

innodb_buffer_pool_size = 4G

innodb_additional_mem_pool_size = 20M

innodb_log_file_size = 256M

innodb_log_buffer_size = 8M

innodb_flush_log_at_trx_commit = 1

innodb_lock_wait_timeout = 100

innodb_open_files=800

innodb_file_per_table = 1

innodb_commit_concurrency = 4


 3)使用mysqlreport调优性能


下载  :http://hackmysql.com/scripts/mysqlreport-3.5.tgz

解压   tar zxf mysqlreport-3.5.tgz

./mysqlreport -user test -password test -port 3306

Can't locate DBI.pm in @INC  (@INC  contains: /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 .) at ./mysqlreport line 24.

BEGIN failed--compilation aborted at ./mysqlreport line 24.


解决该错误 : sudo yum install perl-DBI perl-DBD-MySQL -y


使用mysqlreport

[fanlinlin@WRM_DB01 mysqlreport-3.5]$ perl  mysqlreport  --host=127.0.0.1  --user=test --password=test

__ Key _________________________________________________________________


Buffer used   295.49M of  24.00G  %Used:   1.20

  Current       4.78G            %Usage:  19.91

Write hit      65.12%

Read hit       99.97%

__ Questions ___________________________________________________________

Total          45.03M    19.2/s

  DMS          22.87M     9.7/s  %Total:  50.79

  QC Hits      17.39M     7.4/s           38.63

  Com_          3.53M     1.5/s            7.85

  COM_QUIT      1.41M     0.6/s            3.13

  -Unknown    178.89k     0.1/s            0.40

Slow 2 s        2.93M     1.3/s            6.52  %DMS:  12.83  Log:  ON

DMS            22.87M     9.7/s           50.79

  SELECT       15.89M     6.8/s           35.28         69.48

  INSERT        3.80M     1.6/s            8.44         16.63

  UPDATE        1.41M     0.6/s            3.14          6.18

  REPLACE     938.06k     0.4/s            2.08          4.10

  DELETE      827.92k     0.4/s            1.84          3.62

Com_            3.53M     1.5/s            7.85

  set_option    2.03M     0.9/s            4.50

  change_db     1.01M     0.4/s            2.25

  show_status 366.23k     0.2/s            0.81

__ SELECT and Sort _____________________________________________________

Scan            2.51M     1.1/s %SELECT:  15.81

Range           3.98M     1.7/s           25.05

Full join      14.74k     0.0/s            0.09

Range check         0       0/s            0.00

Full rng join       0       0/s            0.00

Sort scan       1.68M     0.7/s

Sort range    251.33k     0.1/s

Sort mrg pass     371     0.0/s


__ Query Cache _________________________________________________________


Memory usage   35.67M of  64.00M  %Used:  55.73

Block Fragmnt   9.92%

Hits           17.39M     7.4/s

Inserts        15.49M     6.6/s

Insrt:Prune    4.81:1     5.2/s

Hit:Insert     1.12:1


__ Table Locks _________________________________________________________


Waited          3.36k     0.0/s  %Total:   0.01

Immediate      24.70M    10.5/s


__ Tables ______________________________________________________________


Open              287 of 1024    %Cache:  28.03

Opened            893     0.0/s


__ Connections _________________________________________________________


Max used           26 of  800      %Max:   3.25

Total           1.41M     0.6/s


__ Created Temp ________________________________________________________


Disk table      3.57k     0.0/s

Table         927.74k     0.4/s    Size:  16.0M

File              748     0.0/s


__ Threads _____________________________________________________________


Running             3 of    7

Cached             13 of   16      %Hit:    100

Created            32     0.0/s

Slow                0       0/s


__ Aborted _____________________________________________________________


Clients            34     0.0/s

Connects          333     0.0/s


__ Bytes _______________________________________________________________


Sent           18.91G    8.1k/s

Received        9.19G    3.9k/s


__ InnoDB Buffer Pool __________________________________________________


Usage           1.00M of   4.00G  %Used:   0.02

Read hit       92.17%

Pages

  Free        262.08k            %Total:  99.98

  Data             64                      0.02 %Drty:   0.00

  Misc              0                      0.00

  Latched                                  0.00

Reads             166     0.0/s

  From file        13     0.0/s            7.83

  Ahead Rnd         1     0.0/s

  Ahead Sql         0       0/s

Writes              0       0/s

Flushes             0       0/s

Wait Free           0       0/s


__ InnoDB Lock _________________________________________________________


Waits               0       0/s

Current             0

Time acquiring

  Total             0 ms

  Average           0 ms

  Max               0 ms


__ InnoDB Data, Pages, Rows ____________________________________________


Data

  Reads            26     0.0/s

  Writes            3     0.0/s

  fsync             3     0.0/s

  Pending

    Reads           0

    Writes          0

    fsync           0

Pages

  Created           0       0/s

  Read             64     0.0/s

  Written           0       0/s

Rows

  Deleted           0       0/s

  Inserted          0       0/s

  Read              0       0/s

  Updated           0       0/s

6.  apache ab 压力测试


 /opt/apache/bin/ab  -c 1000  -n 1000 http://fix.weirenmai.dragon-stone.cn/

This is ApacheBench, Version 2.3 <Revision:655654>

Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/

Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking fix.weirenmai.dragon-stone.cn (be patient)


Completed 100 requests

Completed 200 requests

Completed 300 requests

Completed 400 requests

Completed 500 requests

Completed 600 requests

Completed 700 requests

Completed 800 requests

Completed 900 requests

Completed 1000 requests

Finished 1000 requests

Server Software:        Apache/2.4.3

Server Hostname:        fix.weirenmai.dragon-stone.cn

Server Port:            80

Document Path:          /

Document Length:        0 bytes

Concurrency Level:      1000                             //并发数

Time taken for tests:   19.280 seconds                   //整个测试持续的时间  

Complete requests:      1000                             //完成的请求数 

Failed requests:        0                                //失败的数量 

Write errors:           0

Non-2xx responses:      1000

Total transferred:      669559 bytes                      // 整个传输量 

HTML transferred:       0 bytes


//相当于 LR 中的每秒事务数,后面括号中的 mean 表示这是一个平均值

Requests per second:    51.87 [#/sec] (mean)               

// 相当于 LR 中的平均事务响应时间,后面括号中的 mean 表示这是一个平均值

Time per request:       19279.633 [ms] (mean)

Time per request:       19.280 [ms] (mean, across all concurrent requests)

//平均每秒网络上的流量,可以帮助排除是否存在网络流量过大导致响应时间延长的问题


Connection Times (ms)

              min  mean[+/-sd] median   max


Connect:        0 1699 3354.9      0   13403

Processing:    60 2356 2019.0   1918   15280

Waiting:       60 2354 2019.4   1918   15280

Total:         61 4055 4334.0   2584   19277


Percentage of the requests served within a certain time (ms)

  50%   2584

  66%   4267

  75%   5154

  80%   5807

  90%   9886

  95%  16438

  98%  18259

  99%  18298

 100%  19277 (longest request)


整个场景中所有的用户请求的响应状况,每个请求都有一个响应时间,其中50%的用户响应的时间小于2584ms,66%的用户响应时间小于4267,最大的响应时间为19277ms

优化后测试的结果:


[fanlinlin@web ~]$ /opt/apache/bin/ab  -c 1000 -n 1000  http://fix.weirenmai.dragon-stone.cn/

This is ApacheBench, Version 2.3 <Revision:655654>

Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/

Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking fix.weirenmai.dragon-stone.cn (be patient)


Completed 100 requests

Completed 200 requests

Completed 300 requests

Completed 400 requests

Completed 500 requests

Completed 600 requests

Completed 700 requests

Completed 800 requests

Completed 900 requests

Completed 1000 requests


Finished 1000 requests

Server Software:        Apache/2.4.3

Server Hostname:        fix.weirenmai.dragon-stone.cn

Server Port:            80

Document Path:          /

Document Length:        0 bytes

Concurrency Level:      1000

Time taken for tests:   11.070 seconds

Complete requests:      1000

Failed requests:        0

Write errors:           0

Non-2xx responses:      1000

Total transferred:      637429 bytes

HTML transferred:       0 bytes

Requests per second:    90.33 [#/sec] (mean)

Time per request:       11070.237 [ms] (mean)

Time per request:       11.070 [ms] (mean, across all concurrent requests)

Transfer rate:          56.23 [Kbytes/sec] received

Connection Times (ms)


              min  mean[+/-sd] median   max

Connect:        0  745 1929.5      0    9012

Processing:   529 2289 1451.9   1818    9833

Waiting:      529 2287 1451.8   1818    9833

Total:        544 3033 2312.3   2333   10987

Percentage of the requests served within a certain time (ms)

  50%   2333

  66%   3002

  75%   3811

  80%   4183

  90%   6512

  95%   8925

  98%  10694

  99%  10809

 100%  10987 (longest request)

根据测试结果进行对比 :

对于1000的并发数,总耗时从19.280s下降到11.070s

优化前:

Requests per second:    51.87 [#/sec] (mean)               

Time per request:       19279.633 [ms] (mean)

Time per request:       19.280 [ms] (mean, across all concurrent requests)

Transfer rate:          33.91 [Kbytes/sec] received

优化后:

Requests per second:    90.33 [#/sec] (mean)

Time per request:       11070.237 [ms] (mean)

Time per request:       11.070 [ms] (mean, across all concurrent requests)

Transfer rate:          56.23 [Kbytes/sec] received

最能反应服务器性能的时 Request per second,即每秒完成的请求数从51.87提升到90.33。

每个请求花费的时间从19.280ms下降到11.070ms.

每秒的网络流流量从33.91Kbytes提示到56.23Kbytes.

当一个人找不到出路的时候,最好的办法就是将当前能做好的事情做到极致,做到无人能及。


© 著作权归作者所有

共有 人打赏支持
stone_
粉丝 19
博文 163
码字总数 163611
作品 0
洛阳
程序员
性能调优概述

大纲: 一、概述 二、什么是性能调优?(what) 三、为什么需要性能调优?(why) 四、什么时候需要性能调优?(when) 五、什么地方需要性能调优?(where) 六、什么人来进行性能调优?(who) 七、怎...

陈明乾 ⋅ 2014/07/14 ⋅ 0

求PHP,MYSQL,NGINX方面的配置与调优

求PHP,MYSQL,NGINX方面的配置与调优 1、PHP方面: PHP底层系统架构设计 WEB安全防范 常用设计模式 cache的使用 2、MYSQL方面: mysql性能优化配置, mysql数据库设计,索引 3、memcached,red...

不会武功的猪 ⋅ 2016/04/28 ⋅ 0

DBA要失业了?看ML如何自动优化数据库

译者介绍 杨志洪,DBAplus社群联合发起人,新炬网络首席布道师。Oracle ACE、OCM、《Oracle核心技术》译者。数据管理专家,拥有十余年电信、银行、保险等大型行业核心系统Oracle数据库运维支...

杨志洪 译 ⋅ 2017/06/04 ⋅ 0

java面试常用问题

MYSQL一个语句很慢,怎么调优法? 因为问题是调优,也就是基本不能改变整体的现有实现。下面分析慢的原因并给出对应可能正确的解决方案 1、SQL语句本身的优化,比如去掉不必要的排序等。 2、...

ovirtKg ⋅ 2016/12/02 ⋅ 0

腾讯云CDB的AI技术实践:CDBTune

欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 作者:邢家树,高级工程师,目前就职于腾讯TEG基础架构部数据库团队。腾讯数据库技术团队维护MySQL内核分支TXSQL,100%兼容原生M...

腾讯云加社区 ⋅ 06/05 ⋅ 0

linux+Oracle集群课程全面升级

作为国内最早从事开源架构师级课程研发的公司,从2006年10月开始,荣新稳步提升,将互联网运维作为主导就业方向,并将Linux集群架构课程发展成为国内最顶级、覆盖技术最全面的Linux课程,作为...

张琦 ⋅ 2010/11/19 ⋅ 0

第1章 Java性能调优概述

1.1 性能概述 1.1.1 看懂程序的性能 什么是Full GC? Full GC是指发生在Java堆老年代的GC,会发生Stop The World程序假死现象。 以WEB服务器为例,服务器的响应时间,吞吐量就是两个重要的性...

陶邦仁 ⋅ 2015/01/13 ⋅ 2

读《面向程序员的数据库访问性能优化法则》

刚刚看了一下2014年中国数据库技术大会(DTCC)PPT,网易杭州研究院的一位同学介绍了一下数据库的优化与调优。 网易的Mysql优化做的很好,而且还写了本书和大家分享这些经验《深入浅出MySQL...

ifeixiang ⋅ 2015/01/04 ⋅ 0

mysql 主要性能指标 初级参考2 针对io和innodb

从系统方面入手的话,参考MySQL 调优基础(四) Linux 磁盘IO https://www.2cto.com/database/201510/445288.html iotop -k -u mysql (-k 表示KB,-u mysql表示显示mysql用户的所有进程的IO) i...

liqius ⋅ 2017/10/25 ⋅ 0

有经验JAVA程序员如何提升自己?

具有一到五年开发经验 需要学习内容很多 JVM/分布式/高并发/性能优化/Spring MVC/Spring Boot/Spring Cloud/MyBatis/Netty源码分析等等等 01、透彻理解Tomcat原理手写动静态资源的实现 02、分...

阿阳啊啊 ⋅ 2017/11/29 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

RabbitMQ学习以及与Spring的集成(三)

本文介绍RabbitMQ与Spring的简单集成以及消息的发送和接收。 在RabbitMQ的Spring配置文件中,首先需要增加命名空间。 xmlns:rabbit="http://www.springframework.org/schema/rabbit" 其次是模...

onedotdot ⋅ 8分钟前 ⋅ 0

JAVA实现仿微信红包分配规则

最近过年发红包拜年成为一种新的潮流,作为程序猿对算法的好奇远远要大于对红包的好奇,这里介绍一种自己想到的一种随机红包分配策略,还请大家多多指教。 算法介绍 一、红包金额限制 对于微...

楠木楠 ⋅ 20分钟前 ⋅ 0

Python 数电表格格式化 xlutils xlwt xlrd的使用

需要安装 xlutils xlwt xlrd 格式化前 格式化后 代码 先copy读取的表格,然后按照一定的规则修改,将昵称中的学号提取出来替换昵称即可 from xlrd import open_workbookfrom xlutils.copy ...

阿豪boy ⋅ 49分钟前 ⋅ 0

面试题:使用rand5()生成rand7()

前言 读研究生这3 年,思维与本科相比变化挺大的,这几年除了看论文、设计方案,更重要的是学会注重先思考、再实现,感觉更加成熟吧,不再像个小P孩,人年轻时总会心高气傲。有1 道面试题:给...

初雪之音 ⋅ 49分钟前 ⋅ 0

Docker Toolbox Looks like something went wrong

Docker Toolbox 重新安装后提示错误:Looks like something went wrong in step ´Checking if machine default exists´ 控制面板-->程序与应用-->启用或关闭windows功能:找到Hyper-V,如果处......

随你疯 ⋅ 今天 ⋅ 0

Guacamole 远程桌面

本文将Apache的guacamole服务的部署和应用,http://guacamole.apache.org/doc/gug/ 该链接下有全部相关知识的英文文档,如果水平ok,可以去这里仔细查看。 一、简介 Apache Guacamole 是无客...

千里明月 ⋅ 今天 ⋅ 0

nagios 安装

Nagios简介:监控网络并排除网络故障的工具:nagios,Ntop,OpenVAS,OCS,OSSIM等开源监控工具。 可以实现对网络上的服务器进行全面的监控,包括服务(apache、mysql、ntp、ftp、disk、qmail和h...

寰宇01 ⋅ 今天 ⋅ 0

AngularDart注意事项

默认情况下创建Dart项目应出现以下列表: 有时会因为不知明的原因导致列表项缺失: 此时可以通过以下步骤解决: 1.创建项目涉及到的包:stagehand 2.执行pub global activate stagehand或pub...

scooplol ⋅ 今天 ⋅ 0

Java Web如何操作Cookie的添加修改和删除

创建Cookie对象 Cookie cookie = new Cookie("id", "1"); 修改Cookie值 cookie.setValue("2"); 设置Cookie有效期和删除Cookie cookie.setMaxAge(24*60*60); // Cookie有效时间 co......

二营长意大利炮 ⋅ 今天 ⋅ 0

【每天一个JQuery特效】淡入淡出显示或隐藏窗口

我是JQuery新手爱好者,有时间就练练代码,防止手生,争取每天一个JQuery练习,在这个博客记录下学习的笔记。 本特效主要采用fadeIn()和fadeOut()方法显示淡入淡出的显示效果显示或隐藏元...

Rhymo-Wu ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部