- 浏览: 1547561 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (532)
- 软件设计师 (7)
- PSP (5)
- NET MD (9)
- Hibernate (8)
- DIY (51)
- Work (43)
- GAME (24)
- 未分类 (44)
- iPod (6)
- MySQL (39)
- JSP (7)
- 日语能力考试 (36)
- 小说 (4)
- 豆包网 (23)
- 家用电脑 (7)
- DB2 (36)
- C/C++ (18)
- baby (9)
- Linux (13)
- thinkpad (23)
- OA (1)
- UML (6)
- oracle (24)
- 系统集成 (27)
- 脑梗塞 (6)
- 车 (8)
- MainFrame (8)
- Windows 7 (13)
- 手机 (8)
- git (12)
- AHK (2)
- COBOL (2)
- Java (9)
最新评论
-
安静听歌:
... ...
UUID做主键,好还是不好?这是个问题。 -
lehehe:
http://www.haoservice.com/docs/ ...
天气预报 -
lehehe:
[url http://www.haoservice.com/ ...
天气预报 -
liubang201010:
监控TUXEDO 的软件推荐用这个,专业,权威.并能提供报警和 ...
(转载)Tuxedo中间件简介 -
tinkame:
Next[j] =-1 当j=0时;=Max{k|0<k ...
KMP字符串模式匹配详解
MySQL性能优化TIPS
周三, 2006/09/20 - 21:30 — yejr
<script language="javascript" src="/misc/cr.js" type="text/javascript"></script>
作/译者:叶金荣(Email: ),来源:http://imysql.cn,转载请注明作/译者和出处,并且不能用于商业用途,违者必究。
一. 启动参数优化
修改 my.cnf (或者my.ini),加入/修改以下几行
#设定缓存的连接数,节省连接时的开销 back_log = 64 #禁用文件系统外部锁 external-locking = 0 #禁用BDB,如果你确实不需要的话,innodb也是如此 skip-bdb #索引缓冲,如果是专用的数据库服务器,可以设置高达服务器内存的一半,如果不是专用的, #还是设置得低一点 key_buffer = 512M #缓存数据表数量,如果内存较大,可以设置稍微高一点,否则还是设置低一点 #设置这个参数可以参见系统状态中的 open_tables(表示当前打开的数据表总数) #和 opened_tables(表示所有打开的数据表总数) table_cache = 128 #禁用dns解析,如果你的授权信息中采用dns授权方式了,就不能启用该选项 skip-name-resolve #记录慢查询和没有使用索引的查询,便于帮助分析问题所在 long_query_time = 1 log-slow-queries = /usr/local/mysql/data/slow.log log-queries-not-using-indexes
其他参数诸如 sort_buffer_size,net_buffer_length,read_buffer_size,read_rnd_buffer_size,myisam_sort_buffer_size,
等请查询MySQL手册,然后做出合适的调整.
thread_cache_size,query_cache_size,max_binlog_cache_size
二. 其他小TIPS
- 针对Innodb表,尽量不执行
SELECT COUNT(*)
语句,因为Innodb表没有类似MyISAM那样的内部计数器来记录表记录总量,执行这个操作将会全表扫描,速度很慢. - 尽量使用MyISAM表,除非必须使用其他类型,因为MyISAM类型的总体读写效率是相当高的,缺点是表级锁,而不是行/页级锁.
- 善用 <coce></coce>EXPLAIN来帮助你分析查询优化情况
- 如果需要对一个较大的且并发读写较多的数据表做
GROUP BY
等统计操作,建议使用摘要表来存储统计信息,定期更新统计表,这可能获得很大的性能改善. - 查询时如果有
ORDER BY
分句的话,注意让它的字段顺序和索引字段顺序对应,这样能加快排序速度 - 如果有一个多字段索引,则查询时,必须按照索引顺序来使用,否则该索引不会用到.例如:
索引`idx_`(col1, col2, col3)
,那么查询SELECT .... FROM ... WHERE col1=1 AND col2=2;
使用索引,而查询... WHERE col2=2 AND col3=3;
或... WHERE col1=1 AND col3=3;
则不使用索引. WHERE
中的条件如果有恒量类型的(如 `field` = 1
),就尽量放在前面,这样能更快的执行过滤.- 2 个表连接时,连接字段的类型最好一致(包括字段长度),这样的话索引速度快多了.
- 大部分情况下,字符类型的字段索引值需要一部分,例如
CREATE INDEX char_idx ON tbl1 ( name(10) );
- 尽量使用最合适的数据类型,能使用
ENUM
就不使用TINYINT
,能使用SMALLINT
就不使用MEDIUMINT
.这样能节省存储空间,增加数据存储量,提高搜索速度.不要担心这样会对省级产生很大的影响,因为加入从TINYINT
类型改变为INT
的话,并不会改变原来的数据. - 如果知道某个表总是频繁使用的话,可以把它放到
hot_cache
中,用以下方法:
SET GLOBAL hot_cache.key_buffer_size=128*1024; CACHE INDEX `xxx` IN hot_cache;
- 把拖沓复杂,速度慢的的查询分解成多个简洁明了的查询,这样尽管查询次数多了,但是总体速度和效率却可能反而更高了,而且也减少了锁表的可能.
- 执行查询时,尽量不使用外部函数,因为这样的话就无法使用可能存在的索引,并且无论如何都会极大地降低效率.如:
... WHERE `create_time` > UNIX_TIMESTAMP(NOW());
这样的查询.可以在程序中把当前的时间取得,然后直接执行构造好了的SQL语句. - 在索引字段上使用 LIKE 查询时,左边不要使用 '%' 修饰符,这样就可以利用索引,否则无法使用索引.如
... `name` LIKE 'yejr%';
. - 如果有可能,多使用存储过程,这大概能获得 22% 的性能提高.
- 如果并发访问量相对最大连接数小多了的话,最好使用永久连接,这样能节省不少连接时的系统资源损耗.
- 定期的在MyISAM表上执行
OPTIMIZE TABLE
,这能整理随便,提高索引效率. - 如果你主要按 col1,col2,...顺序检索记录,请在对表大量更改后执行
ALTER TABLE ... ORDER BY col1, col2, ...
语句,这可以获得更好的性能. - 对于频繁更改的MyISAM表,应尽量避免更新所有变长字段(VARCHAR、BLOB和TEXT).
- 对于记录总数超过500万的单表,就应该赶紧考虑分表了.分表策略有多种,比如按ID号段,或者按时间切分,等等.
- 创建数据表时尽量指定字段不能为NULL,并且有默认值.
- 使用
LOAD DATA
,而不是使用大批量的INSERT
语句来导入数据. - 使数据表名和字段名尽可能的短,例如在
user
表中使用字段名name
,而不是user_name
. - 用
DELAY_KEY_WRITE = 1
选项让MyISAM更快地更新索引,因为在表关闭之前它们不刷新到硬盘上.缺点是如果服务器如果突然被杀掉了,重启之后就必须运行myisamchk
修复索引才行. - 采用复制机制来分摊读数据的负载,把写数据只放在主服务器上,把读平均分摊到各个从服务器上,能大大提高系统负载.
发表评论
-
MySQL配置文件my.cnf 例子最详细翻译
2009-07-20 11:58 1756http://www.blogjava.net/hunte ... -
MySQL :: @@Rowcount in MySQL
2009-03-02 15:39 2257@@Rowcount in MySQL? Posted ... -
MYSQL中删除重复记录的方法
2009-02-26 12:23 0MYSQL中删除重复记录的方法 2008 ... -
使用 MYSQLBINLOG 来恢复数据。
2009-02-26 12:21 0使用 MYSQLBINLOG 来恢复数据。 20 ... -
13.2.3. InnoDB Startup Options and System Variable
2009-02-20 13:37 1272http://dev.my ... -
mysql innodb 配置详解
2009-02-20 11:01 3593加为好友发送私信在线聊天 -
20.3.9 关于死锁 深入浅出MySQL——数据库开发、优化与管理维护
2009-02-20 10:50 3167深入浅出MySQL——数据库开发、优化与管理维护 回 ... -
mysql的临时表不支持自连接
2009-02-18 13:32 2372TEMPORARY TABLE ProblemsThe fol ... -
windows 下安装两个MySQL收藏
2009-02-03 16:28 2402由于两个MySQL进程需要不同的配置文件,以下所有操作均是在W ... -
1.4.1. What's New in MySQL 5.1
2009-02-03 16:25 11881.4.1. What's New in My ... -
查看mysql版本的四种方法
2009-02-02 10:57 9771:在终端下:mysql -V。 以下 ... -
Server SQL Modes
2009-02-01 11:06 14405.1.7. Server SQL Modes ... -
MySQL中的各种JOIN(CROSS JOIN, INNER JOIN, LEFT [OUTER]
2009-01-13 14:50 6228MySQL中的各种JOIN(CROSS JOIN, I ... -
[转]SQL Server 2000执行计划成本(5/5)
2009-01-09 15:26 1208[转]SQL Server 2000执行计划成本(5/5) ... -
SQL Server 2000执行计划成本(4/5)
2009-01-09 15:25 1110[转]SQL Server 2000执行计划成本(4/5) ... -
[转]SQL Server 2000执行计划成本(3/5)
2009-01-09 15:23 1540[转]SQL Server 2000执行计划成本(3/5) ... -
SQL Server 2000执行计划成本(1/5)
2009-01-09 14:52 1651[转]SQL Server 2000执行计划成本(1/5) ... -
浅谈MySQL数据库优化
2009-01-09 14:46 1352浅谈MySQL数据库优化 [收藏此页] [打印] ... -
sql server支持create table as ...建表么
2009-01-09 11:52 9051sql server支持create table as .. ... -
SQL Server如何识别自动创建的索引
2009-01-08 15:57 1323SQL Server如何识别自动创建的索引 http://w ...
相关推荐
MySQL是世界上最受欢迎的开源关系型数据库...以上是对"MySql Tips"主题的简要概述,实际应用中还需要根据具体需求和环境进行调整和优化。通过持续学习和实践,你可以更好地掌握MySQL,从而提升数据库管理和应用的效率。
MySQL是世界上最流行和广泛使用的开源关系型数据库管理系统之一。...性能优化是一个持续的过程,需要持续的监控、评估和调整。上述建议和技巧将帮助数据库管理员更加高效地管理和优化他们的MySQL数据库。
除了上述提到的方法外,还有一些额外的小贴士可以帮助进一步优化 MySQL 的性能: - **内存管理**:合理配置内存参数,如 `innodb_buffer_pool_size`,以充分利用物理内存。 - **I/O 优化**:考虑使用 RAID 技术来...
- **为专业键值存储铺平道路**:当需要进一步优化性能或功能时,可以平滑过渡到专门的键值存储解决方案。 #### 结论 通过上述讨论可以看出,虽然MySQL传统上被视为关系型数据库管理系统,但在恰当的设计和配置下,...
《Packtpub Drupal 6 Performance Tips Feb 2010》是针对Drupal 6平台的一本性能优化指南,由Packtpub出版社于2010年2月发布。该书聚焦于提升Drupal网站的运行效率,减少加载时间,增强用户体验,并帮助管理员和...
5. **服务优化**:针对特定服务(如MySQL、Apache等)调整配置,如并发连接数、缓存大小等。 6. **负载均衡和分布式**:在多节点环境中,使用负载均衡器分发请求,或者通过分布式系统来提升整体性能。 7. **监控和...
- 使用`EXPLAIN`来分析查询计划,帮助优化查询性能。 在进行多表连接查询时,理解这些基本概念和它们的区别至关重要,因为它们能帮助你有效地查询和管理数据库中的数据。在实际应用中,根据需求选择适当的连接类型...
其性能优化体现在对高并发连接的支持,据说能处理高达50,000个并发连接,而资源占用极低。 2. **高稳定性**:Nginx具有很高的稳定性,即使面对大量无活动连接,内存占用也非常小,抵御DoS攻击的能力较强。它可以...
Nginx的基础知识部分涉及到Nginx的安装、调试、Rewrite规则的应用、Redirect重定向、自动添加目录斜线、Location指令的使用、文件过期时间的设置、防盗链技术、访问控制、日志处理、缓存策略、负载均衡、简单优化、...
LEMP是Linux、Nginx、MySQL和PHP的组合,用于搭建高性能的Web服务环境。 **Nginx服务监控** 监控Nginx的CPU、内存使用情况、连接数等,以便及时发现和解决问题。 **常见问题与错误处理** 文档会涵盖常见的Nginx...
8. 性能优化:包括表分区、索引策略、查询优化、缓存机制等,都是提高数据库性能的重要手段。 9. 安全性与权限管理:数据库设计应考虑用户权限控制,防止数据泄露和未经授权的访问。了解不同数据库系统的安全特性至...
一、什么影响了数据库查询速度 1.1 影响数据库查询速度的四个因素 ...Tips: 最好不要在主库上数据库备份,大型活动前取消这样的计划。 效率低下的 sql:超高的 QPS与 TPS。大量的并发:数据连接数被占满
6. **数据库性能优化**:包括查询优化、存储过程使用、合理分区、适当的数据类型选择、索引策略等,都是数据库性能优化的重要方面。 7. **数据库安全**:涉及用户权限管理、数据加密、审计日志等,确保数据的安全...
- **性能优化**:除了内存列存储和字节码生成(Bytecode Generation)等技术,SparkSQL还将引入成本模型(Cost Model)等高级优化策略,以实现动态评估和生成最优的物理执行计划。 - **组件扩展性**:SparkSQL允许用户...
本文详细总结了在PHP开发过程中...以上总结涵盖了代码风格、异常处理、性能优化和安全实践等多个方面的知识点,是进行PHP开发时应当重点考虑的要素。通过遵循这些建议,开发人员可以编写出更加稳定、安全和高效的代码。
7. 数据库性能优化 "Learning tips"中提到的"Refer to your three-dimensional design, and then finish your guiding case by yourself." 提到了三维设计,这可能是在暗示数据库的索引设计。合理的索引能显著提升...
12. **性能监测**:持续监控网站性能,使用工具如Google Analytics跟踪用户行为,以便进行数据分析和改进。 13. **响应式客户服务**:设立在线聊天或帮助中心,解答用户的疑问,处理退票或换票请求。 14. **测试和...
5. **性能分析**:除了基本的调试功能,VS2010还包含性能分析器,可以对应用程序进行CPU使用率、内存占用等性能方面的检测,帮助优化数据处理效率。 6. **错误处理**:在数据查漏处理中,异常处理是关键。VS2010...
#### 六、程序调试与性能优化 - **调试工具**:利用Flex Builder中的调试功能来定位和解决程序中的错误。 - **性能分析**:通过性能分析工具来识别程序中的瓶颈,并进行优化。 #### 七、媒体资产管理 - **媒体管理*...
此外,其性能优化设计确保了在处理大量数据时的流畅性。 Next DBGrid则是专门针对数据库应用设计的表格控件。它可以直接连接到各种数据库,如SQL Server、Oracle、MySQL等,提供实时的数据绑定能力。开发者可以通过...