- 浏览: 595627 次
- 性别:
- 来自: 厦门
文章分类
- 全部博客 (669)
- oracle (36)
- java (98)
- spring (48)
- UML (2)
- hibernate (10)
- tomcat (7)
- 高性能 (11)
- mysql (25)
- sql (19)
- web (42)
- 数据库设计 (4)
- Nio (6)
- Netty (8)
- Excel (3)
- File (4)
- AOP (1)
- Jetty (1)
- Log4J (4)
- 链表 (1)
- Spring Junit4 (3)
- Autowired Resource (0)
- Jackson (1)
- Javascript (58)
- Spring Cache (2)
- Spring - CXF (2)
- Spring Inject (2)
- 汉字拼音 (3)
- 代理模式 (3)
- Spring事务 (4)
- ActiveMQ (6)
- XML (3)
- Cglib (2)
- Activiti (15)
- 附件问题 (1)
- javaMail (1)
- Thread (19)
- 算法 (6)
- 正则表达式 (3)
- 国际化 (2)
- Json (3)
- EJB (3)
- Struts2 (1)
- Maven (7)
- Mybatis (7)
- Redis (8)
- DWR (1)
- Lucene (2)
- Linux (73)
- 杂谈 (2)
- CSS (13)
- Linux服务篇 (3)
- Kettle (9)
- android (81)
- protocol (2)
- EasyUI (6)
- nginx (2)
- zookeeper (6)
- Hadoop (41)
- cache (7)
- shiro (3)
- HBase (12)
- Hive (8)
- Spark (15)
- Scala (16)
- YARN (3)
- Kafka (5)
- Sqoop (2)
- Pig (3)
- Vue (6)
- sprint boot (19)
- dubbo (2)
- mongodb (2)
最新评论
解决 MYSQL CPU 占用 100% 的经验总结
A 增加 tmp_table_size 值。mysql 的配置文件中,tmp_table_size 的默认大小是 32M。如果一张临时表超出该大小,MySQL产生一个 The table tbl_name is full 形式的错误,如果你做很多高级 GROUP BY 查询,增加 tmp_table_size 值。 这是 mysql 官方关于此选项的解释:
tmp_table_size
This variable determines the maximum size for a temporary table in memory. If the table becomes too large, a MYISAM table is created on disk. Try to avoid temporary tables by optimizing the queries where possible, but where this is not possible, try to ensure temporary tables are always stored in memory. Watching the processlist for queries with temporary tables that take too long to resolve can give you an early warning that tmp_table_size needs to be upped. Be aware that memory is also allocated per-thread. An example where upping this worked for more was a server where I upped this from 32MB (the default) to 64MB with immediate effect. The quicker resolution of queries resulted in less threads being active at any one time, with all-round benefits for the server, and available memory.
B 对 WHERE, JOIN, MAX(), MIN(), ORDER BY 等子句中的条件判断中用到的字段,应该根据其建立索引 INDEX。索引被用来快速找出在一个列上用一特定值的行。没有索引,MySQL不得不首先以第一条记录开始并然后读完整个表直到它找出相关的行。表越大,花费时间越多。如果表对于查询的列有一个索引,MySQL能快速到达一个位置去搜寻到数据文件的中间,没有必要考虑所有数据。如果一个表有1000行,这比顺序读取至少快100倍。所有的MySQL索引(PRIMARY、UNIQUE和INDEX)在B树中存储。
根据 mysql 的开发文档:
索引 index 用于:
1.快速找出匹配一个WHERE子句的行,
2.当执行联结(JOIN)时,从其他表检索行,
3.对特定的索引列找出MAX()或MIN()值,
4.如果排序或分组在一个可用键的最左面前缀上进行(例如,ORDER BY key_part_1,key_part_2),排序或分组一个表。如果所有键值部分跟随DESC,键以倒序被读取。
在一些情况中,一个查询能被优化来检索值,不用咨询数据文件。如果对某些表的所有使用的列是数字型的并且构成某些键的最左面前缀,为了更快,值可以从索引树被检索出来。
假定你发出下列SELECT语句:
如果一个多列索引存在于col1和col2上,适当的行可以直接被取出。如果分开的单行列索引存在于col1和col2上,优化器试图通过决定哪个索引将找到更少的行并来找出更具限制性的索引并且使用该索引取行。
开发人员做 SQL 数据表设计的时候,一定要通盘考虑清楚。
转自:http://lestang.iteye.com/blog/1683902
A 增加 tmp_table_size 值。mysql 的配置文件中,tmp_table_size 的默认大小是 32M。如果一张临时表超出该大小,MySQL产生一个 The table tbl_name is full 形式的错误,如果你做很多高级 GROUP BY 查询,增加 tmp_table_size 值。 这是 mysql 官方关于此选项的解释:
tmp_table_size
This variable determines the maximum size for a temporary table in memory. If the table becomes too large, a MYISAM table is created on disk. Try to avoid temporary tables by optimizing the queries where possible, but where this is not possible, try to ensure temporary tables are always stored in memory. Watching the processlist for queries with temporary tables that take too long to resolve can give you an early warning that tmp_table_size needs to be upped. Be aware that memory is also allocated per-thread. An example where upping this worked for more was a server where I upped this from 32MB (the default) to 64MB with immediate effect. The quicker resolution of queries resulted in less threads being active at any one time, with all-round benefits for the server, and available memory.
B 对 WHERE, JOIN, MAX(), MIN(), ORDER BY 等子句中的条件判断中用到的字段,应该根据其建立索引 INDEX。索引被用来快速找出在一个列上用一特定值的行。没有索引,MySQL不得不首先以第一条记录开始并然后读完整个表直到它找出相关的行。表越大,花费时间越多。如果表对于查询的列有一个索引,MySQL能快速到达一个位置去搜寻到数据文件的中间,没有必要考虑所有数据。如果一个表有1000行,这比顺序读取至少快100倍。所有的MySQL索引(PRIMARY、UNIQUE和INDEX)在B树中存储。
根据 mysql 的开发文档:
索引 index 用于:
1.快速找出匹配一个WHERE子句的行,
2.当执行联结(JOIN)时,从其他表检索行,
3.对特定的索引列找出MAX()或MIN()值,
4.如果排序或分组在一个可用键的最左面前缀上进行(例如,ORDER BY key_part_1,key_part_2),排序或分组一个表。如果所有键值部分跟随DESC,键以倒序被读取。
在一些情况中,一个查询能被优化来检索值,不用咨询数据文件。如果对某些表的所有使用的列是数字型的并且构成某些键的最左面前缀,为了更快,值可以从索引树被检索出来。
假定你发出下列SELECT语句:
mysql> SELECT * FROM tbl_name WHERE col1=val1 AND col2=val2;
如果一个多列索引存在于col1和col2上,适当的行可以直接被取出。如果分开的单行列索引存在于col1和col2上,优化器试图通过决定哪个索引将找到更少的行并来找出更具限制性的索引并且使用该索引取行。
开发人员做 SQL 数据表设计的时候,一定要通盘考虑清楚。
转自:http://lestang.iteye.com/blog/1683902
发表评论
文章已被作者锁定,不允许评论。
-
mysql 技术内幕学习
2018-10-22 12:42 606... -
mysql 全文索引(fulltext)学习
2018-10-15 11:09 549使用索引是数据库性能优化的必备技能之一。在MySQL数据库中, ... -
mysql cast和convert函数学习(将字符串转数字)
2018-08-03 11:12 1006MySQL 的CAST()和CONVERT()函数可用来获取一 ... -
mysql 外键锁机制
2014-12-09 10:25 1122在mysql的多个存储引擎中,innodb支持外键,但是由于外 ... -
mysql 常见函数总结
2014-11-06 19:41 732--获取当前的database se ... -
MySQL checksum了解
2014-11-05 19:51 507在主从复制中Checksum常常需要对某些重要的表进行一致性检 ... -
Mysql 常见命令总结
2014-11-04 20:01 3441.linux下启动mysql的命令: mysqladm ... -
MySql 数据库的创建和查看
2014-11-04 19:51 381使用SHOW语句找出在服务器上当前存在什么数据库 mys ... -
MySQL独立表空间VS共享表空间
2014-11-04 19:19 551在使用Innodb引擎时将要 ... -
mysql Multiversion Concurrency Control机制(mvcc)
2014-09-11 17:46 682在进行多事务 ... -
mysql 操作索引FORCE INDEX
2014-09-01 17:14 16891、创建索引 索引的创建可以在CREATE TABLE语句中 ... -
InnoDB Insert Buffer(插入缓冲)
2014-08-30 11:40 1129插入缓冲,并不是缓存的 ... -
mysql 存储过程例子
2014-08-28 11:36 541(1)循环遍历值 drop procedure if e ... -
MySQL if case语句使用总结
2014-08-26 19:47 563Mysql的if既可以作为表达式用,也可在存储过程中作为流程控 ... -
mysql 事务隔离级别
2014-08-25 12:00 667用户可以用SET TRANSACTION语句改变单个会话或者所 ... -
mysql cursor使用
2014-08-22 20:24 861一,什么是游标(cursor) 个人觉得就是一个cursor, ... -
mysql 查看表数据量
2014-08-22 16:55 482数据库中有几十上百张表,那么哪些表的数据量比较大呢,总不 ... -
mysql mysqldump导入导出
2014-08-22 16:32 1038我们来看几个常用用例: (1)导出整个数据库 mysqld ... -
mysql DATE_FORMAT() 函数
2014-08-22 16:23 458定义和用法 DATE_FORMAT() 函数用于以不同的格式显 ... -
MySQL性能调优 - Table_cache(table_open_cache)
2014-08-14 16:12 0table_cache是一个非常重 ...
相关推荐
《mysql管理之道:性能调优、高可用与监控》由资深mysql专家撰写,以最新的mysql版本为基础,以构建高性能mysql服务器为核心,从故障诊断、表设计、sql优化、性能参数调优、mydumper逻辑、xtrabackup热备份与恢复、...
在IT领域,特别是数据库管理与优化方面,MySQL作为一种广泛使用的开源关系型数据库系统,其运维与调优一直是DBA(数据库管理员)和技术人员关注的重点。本文将基于“MySQL运维调优”的主题,深入探讨相关的核心知识...
本文将详细介绍MySQL数据库性能调优的方法和技术,包括操作系统层面的优化、文件系统的选择、硬件配置建议、SQL语句优化技巧以及数据库内部配置的调整等。 #### 二、操作系统优化 1. **内核参数调整**: - 调整...
本文详细介绍了如何通过MySQL集群加上高可用性(HA)配置来实现MySQL性能调优的实践案例,文档中涉及到的操作步骤,适用于希望提高数据库性能与稳定性的用户。 知识点1:MySQL Cluster简介 MySQL Cluster是一种多主机...
本文通过介绍一项研究案例——基于MySQL性能调优的推荐系统的优化设计,探讨了如何通过技术手段改善MySQL数据库的性能,从而提升整个推荐系统的运行效率。 #### MySQL性能调优的重要性 MySQL作为一款广泛使用的...
《MySQL性能调优与架构设计》是一本由阿里巴巴DBA团队编著的专业书籍,它深入探讨了MySQL数据库在实际业务中的优化策略和架构构建。本书旨在帮助读者掌握如何提升MySQL数据库的性能,确保系统的稳定性和高可用性。...
MySQL性能调优与架构设计是数据库管理领域的重要课题,尤其在处理大数据量时,优化技巧和架构...这份"mysql性能调优与架构设计--全册 .pdf"文档将为读者提供详尽的指导和实践案例,帮助数据库管理员更好地应对挑战。
MySQL数据库在运行过程中,如果CPU使用率过高,可能会影响整个系统的性能,甚至导致服务中断。这种情况通常是由于多种因素引起的,包括但不限于不优化的查询、无索引的查询、内存配置不当等。以下是一些解决MySQL ...
9. **硬件升级**:增加内存、使用SSD硬盘、提升CPU性能等硬件优化,可以显著提升MySQL处理高并发的能力。 10. **架构设计**:采用微服务架构,将单一应用拆分为一组小型服务,每个服务都有独立的数据库,可以独立...
1. **系统监控工具**:了解并使用如`top`, `htop`, `vmstat`, `iostat`, `mpstat`, `free`, `dstat`等工具来监控系统CPU、内存、磁盘I/O和网络活动,这些都是性能调优的基础。 2. **进程管理**:分析高CPU或内存...
CPU调优主要包括进程调度策略调整(如nice值和renice命令)、内核参数优化(比如sysctl配置)以及CPU亲和性设置。通过合理分配优先级,可以改善高负载时的系统响应。 3. **内存管理**: 内存调优关注如何高效利用...
第一部 MySQL基础入门(21节) 01-老男孩运维DBA课程开班...04-linux进程占用cpu高的解决方案案例.avi 05-数据库账户权限控制多种思路及技巧.avi 06-数据库客户端安全控制策略详解.avi 07-数据库运维的核心管理思想.avi
8. 硬件和操作系统优化:分析硬件(CPU、内存、存储等)和操作系统对MySQL性能的影响,以及如何选择合适的硬件和操作系统参数以提高性能。 9. 现实应用问题:讨论在实际应用中遇到的性能问题,并提供解决这些问题的...
10. 监控与调优:通过监控数据库性能指标,如CPU使用率、I/O等待时间、QPS(每秒查询数)、TPS(每秒事务数)等,及时发现并解决问题,进行性能调优。 这份《云数据库十大经典案例》涵盖了从基础架构到高级应用的全...