您的位置:首页 > 数据库 > MySQL

mysql 学习记录(二十二)--mysql的应用优化

2015-11-04 23:56 609 查看
一、理论:

1.使用连接池

a.把连接当做对象或设备,统一放在‘连接池’里。凡是需要访问数据库的地方都从连接池里取连接

2.减少对mysql的访问:

a.避免对同一数据做重复检索

b.使用查询缓存

1)have_query_cache:表明服务器在安装时是否已经配置了高速缓存

2)query_cache_size:表明缓存区大小

3)query_cache_type:0/off = 缓存关闭,1/on = 缓存打开(使用sql_no_cache的select除外),2/demand(只有带sql_cache的select语句提供高速缓存

3.使用show status命令,监视查询缓存使用:

a.qcache_queries_in_cache:在缓存中已注册的查询数目

b.qcache_inserts:被加入到缓存中的查询数目

c.qcache_his:缓存采样数目

d.qcache_lowmem_prunes:因为缺少内存而被从缓存中删除的查询数目 

e.qcache_not_cached:没有被缓存的查询数目 

f.qcache_free_memory:查询缓存的空间内存总数

g.qcache_free_blocks:查询缓存的空闲内存块数目 

h.qcache_total_blocks:查询缓存的块的总数目

4.增加cache层:

a.将部分数据从数据库抽取出来存成文件

b.建立二级数据库

5.负载均衡:

a.采取mysql复制分流查询操作

b.采取分布式数据库架构,具体可以用mysql的cluster功能,但必须采用innod存储引擎

6.其他优化方案:

a.对于没有删除行操作的myisam表,插入操作可以和查询操作并行进行。因为不会出现阻塞。如果一定要删除,可以在空闲时间删除。并且在删除之后进行optimize操作

b.充分利用列有默认值,只有插入的值不同于默认值时才‘明确’插入值,这样可以提高插入速度
c.表的字段尽可能不使用自增长变量,因为在高并发情况下自增长可能对效率有影响

二、实践:

mysql> use sakila;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> show variables like '%query_cache%';
+------------------------------+---------+
| Variable_name                | Value   |
+------------------------------+---------+
| have_query_cache             | YES     |
| query_cache_limit            | 1048576 |
| query_cache_min_res_unit     | 4096    |
| query_cache_size             | 0       |
| query_cache_type             | OFF     |
| query_cache_wlock_invalidate | OFF     |
+------------------------------+---------+
6 rows in set (0.00 sec)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  sql myisam 索引 应用 优化