首页 > 代码库 > mysql优化

mysql优化

索引的存储分类

MyISAM存储引擎的表的数据和索引时自动分开储存的。各自是一个独立的文件
Inodb 存储引擎的表的结构和索引都是存储在一个表的空间里。但可以有多个文件组成

mysql目前不支持函数索引
mysql如何使用索引
索引用于快速找出在某个列中有一特定值的行。对相关列使用索引时提供select操作性能的最佳途径

索引使用

使用like的查询   索引模糊尽量把 % 放到后面。

select *from t2 where name like “%aa”(用不到索引)

select *from t2 where name like “aa%” (使用索引)

使用and 或者or查询的时候。两端最好都加上索引字段

当该字段类型和该字段的值不匹配的时候,不适用索引

查看索引使用过的情况

show status like ‘handler_read%’

查看索引被读的次数

handler_read_end_next 数字越大。说明需要使用索引优化

优化group by语句

如果使用group by 但用户要避免排序结果的损耗,则可以使用order by null 来禁止排序

数据表的优化

检查数据表

check table tb_name

修复数据表(碎片整理)

optimize table tb_name

数据库的优化

1.优化表的类型

2.通过拆分提高表的访问效率

3.使用中间表提高统计查询速度

数据库服务器的优化

四种字符集尽量选用utf8

character-set-server=utf8

default-character-set=utf8

collation-server=utf_general_ci(字符集校验)

开启bin-log日志

my.cnf

log-bin =mysql-bin #开启mysql bin  log日志

开启慢查询日志

show variables like “%slow%”
[mysqld]
log_slow_queries=slow.log
log_slow_time=5(慢查询的时间)

 socket丢失的问题

socket=/tmp/mysql.sock
通过tcp 临时登录
mysql-uroot -proot --protocol tcp -hlocalhost

root 密码的破解

1.跳过授权表
mysqld_safe --skip-grant-tables --user=mysql &
2.使用没有密码的root登录
mysql -uroot
3.更改密码
update mysql.user set password=password(“new password”)

 

mysql优化