简单总结了一下
1使用索引但是不要滥用索引
2使用持续的连接(连接池)
3缓存数据库使用,减少数据库的负载
4不要使用select * from table_name而是查询需要的列
5读写分离(多个数据源,读写业务分离在不同数据源)
6横向扩展,分布式数据库(可以根据id存储数据在不同的数据库上,但是要考虑备份)
7八十二十原则,把精力放在瓶颈的那个点
8优化mysql语句,多用show processlist,show status跟踪数据库的瓶颈sql.
9延迟加载关联表
10mysql配置更大的缓存见下:命令是mysqld --verbose --help
MySQL高速缓存(所有线程共享,一次性分配)
* 键码缓存:key_buffer_size,默认8M。
* 表缓存:table_cache,默认64。
* 线程缓存:thread_cache_size,默认0。
* 主机名缓存:可在编译时修改,默认128。
* 内存映射表:目前仅用于压缩表。
当调节MySQL服务器时,要配置的两个最重要的变量是key_buffer_size和table_cache。在试图更改其它变量前你应先确信已经适当地配置了这些变量。
下面的例子显示了部分典型的不同的运行时配置的变量值。
·如果至少有256MB内存和许多表,想要在中等数量的客户时获得最大性能,应使用:
·shell>mysqld_safe --key_buffer_size=64M --table_cache=256 \
·--sort_buffer_size=4M --read_buffer_size=1M &
·如果只有128MB内存和少量表,但仍然要进行大量的排序,可以使用:
·shell>mysqld_safe --key_buffer_size=16M --sort_buffer_size=1M
如果有许多并行连接,交换问题会发生,除非mysqld已经配置成为每个连接分配很少的内存。如果有足够的内存用于所有连接,mysqld会执行得更好。
·对于少量内存和大量连接,应使用:
·shell>mysqld_safe --key_buffer_size=512K --sort_buffer_size=100K \
·--read_buffer_size=100K &
或甚至为:
shell>mysqld_safe --key_buffer_size=512K --sort_buffer_size=16K \
--table_cache=32 --read_buffer_size=8K \
--net_buffer_length=1K &
如果正对远远大于可用内存的表执行GROUP BY或ORDER BY操作,应增加read_rnd_buffer_size的值以加速排序操作后面的行读取。
如果已经安装了MySQL,support-files目录包含一些不同的my.cnf示例文件:my-huge.cnf、my-大.cnf、my-medium.cnf和my-small.cnf。可以使用这些文件来优化系统。
请注意如果在命令行中为mysqld或mysqld_safe指定一个选项,它只在该次服务器调用中保持有效。要想每次服务器运行时使用该选项,将它放在选项文件中。
要想看参数更改的效果,应执行:
shell>mysqld --key_buffer_size=32M --verbose ---help
变量值列于输出的最后。确保--verbose和---help选项在最后。否则,在命令行中列于它们后面的选项的效果不会反映到输出中。
1
顶
0
踩
分享到:
2010-08-09 17:10
浏览 1278
分类:数据库
评论