+ -
当前位置:首页 → 问答吧 → ubuntu10.04 中的mysql自启动

ubuntu10.04 中的mysql自启动

时间:2010-08-23

来源:互联网

手上有个数据库,只有一个表MyISAM,latin1_swedish_ci,3个字段(id int(7) auto_increment, title varchar(150), file smallint(5)),其中title加了fulltext的index
5M多条记录,其中title绝大多数为小于100字符的,一大半的是小于50个字符的。基本上没有多字节字符。表存储文件大小192兆。
平时操作只有查询title里面的字符串,用like似乎比regexp快一点。不插入,不修改,不删除。只有本地应用。
查询语句只是select * from table where title like '%sss%'
目前查询速度很慢,(我的硬件年纪也比较大了)。每条查询语句平均在3-5秒。

我试着修改了表格的结构,把title varchar(150)改为char(100),把那些太长的title截断了,再做fulltext index,文件大小变成586M了,速度更慢了。

现在我不知道该怎么去优化了,改my.cnf又不会改。

问题:
1、表的数据结构该怎么改动会提高查询速度?(可以考虑把长title字段截断的方案)
2、my.cnf里的内存什么的值该怎么改动能加快查询速度?
3、我曾试过用storage引擎,但是结果比myisam慢多了,是不是我什么地方没有搞对?不过网上有说论查询storage速度是不行的。

谢谢了!

附上我乱搞以后的my.conf
---------------------------------------------------------------
[client]
port = 3306
socket = /var/run/mysqld/mysqld.sock
[mysqld_safe]
socket = /var/run/mysqld/mysqld.sock
nice = 0
[mysqld]
user = mysql
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
port = 3306
basedir = /usr
datadir = /var/lib/mysql
tmpdir = /tmp
skip-external-locking
#
bind-address = 127.0.0.1
#
# * Fine Tuning
#
key_buffer = 384M
max_allowed_packet = 32M
thread_stack = 192K
thread_cache_size = 8
myisam-recover = BACKUP
#max_connections = 100
#table_cache = 64
#thread_concurrency = 10
#
# * Query Cache Configuration
#
query_cache_limit = 4M
query_cache_size = 256M
#
# * Logging and Replication
#
#general_log_file = /var/log/mysql/mysql.log
#general_log = 1
#
#log_slow_queries = /var/log/mysql/mysql-slow.log
#long_query_time = 2
#log-queries-not-using-indexes
#
#server-id = 1
#log_bin = /var/log/mysql/mysql-bin.log
expire_logs_days = 10
max_binlog_size = 100M
#binlog_do_db = include_database_name
#binlog_ignore_db = include_database_name
#
# * InnoDB
#
# chroot = /var/lib/mysql/
#
# ssl-ca=/etc/mysql/cacert.pem
# ssl-cert=/etc/mysql/server-cert.pem
# ssl-key=/etc/mysql/server-key.pem

[mysqldump]
quick
quote-names
max_allowed_packet = 16M

[mysql]
#no-auto-rehash # faster start of mysql but no tab completition

[isamchk]
key_buffer = 16M

!includedir /etc/mysql/conf.d/

作者: sanz   发布时间: 2010-08-23

还是重新实现你的表吧

作者: link_01   发布时间: 2010-08-23

楼上大侠,所言为何啊?不懂。
重做表格?怎么做?没有思路啊

作者: sanz   发布时间: 2010-08-23

手上有个数据库,只有一个表MyISAM,latin1_swedish_ci,3个字段(id int(7) auto_increment, title varchar(150), file smallint(5)),其中title加了fulltext的index
5M多条记录,其中title绝大多数为小于100字符的,一大半的是小于50个字符的。基本上没有多字节字符。表存储文件大小192兆。
平时操作只有查询title里面的字符串,用like似乎比regexp快一点。不插入,不修改,不删除。只有本地应用。
查询语句只是select * from table where title like '%sss%'
目前查询速度很慢,(我的硬件年纪也比较大了)。每条查询语句平均在3-5秒。

我试着修改了表格的结构,把title varchar(150)改为char(100),把那些太长的title截断了,再做fulltext index,文件大小变成586M了,速度更慢了。

现在我不知道该怎么去优化了,改my.cnf又不会改。

问题:
1、表的数据结构该怎么改动会提高查询速度?(可以考虑把长title字段截断的方案)
2、my.cnf里的内存什么的值该怎么改动能加快查询速度?
3、我曾试过用storage引擎,但是结果比myisam慢多了,是不是我什么地方没有搞对?不过网上有说论查询storage速度是不行的。

谢谢了!

附上我乱搞以后的my.conf
---------------------------------------------------------------
[client]
port = 3306
socket = /var/run/mysqld/mysqld.sock
[mysqld_safe]
socket = /var/run/mysqld/mysqld.sock
nice = 0
[mysqld]
user = mysql
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
port = 3306
basedir = /usr
datadir = /var/lib/mysql
tmpdir = /tmp
skip-external-locking
#
bind-address = 127.0.0.1
#
# * Fine Tuning
#
key_buffer = 384M
max_allowed_packet = 32M
thread_stack = 192K
thread_cache_size = 8
myisam-recover = BACKUP
#max_connections = 100
#table_cache = 64
#thread_concurrency = 10
#
# * Query Cache Configuration
#
query_cache_limit = 4M
query_cache_size = 256M
#
# * Logging and Replication
#
#general_log_file = /var/log/mysql/mysql.log
#general_log = 1
#
#log_slow_queries = /var/log/mysql/mysql-slow.log
#long_query_time = 2
#log-queries-not-using-indexes
#
#server-id = 1
#log_bin = /var/log/mysql/mysql-bin.log
expire_logs_days = 10
max_binlog_size = 100M
#binlog_do_db = include_database_name
#binlog_ignore_db = include_database_name
#
# * InnoDB
#
# chroot = /var/lib/mysql/
#
# ssl-ca=/etc/mysql/cacert.pem
# ssl-cert=/etc/mysql/server-cert.pem
# ssl-key=/etc/mysql/server-key.pem

[mysqldump]
quick
quote-names
max_allowed_packet = 16M

[mysql]
#no-auto-rehash # faster start of mysql but no tab completition

[isamchk]
key_buffer = 16M

!includedir /etc/mysql/conf.d/

作者: sanz   发布时间: 2010-08-23

还是重新实现你的表吧

作者: link_01   发布时间: 2010-08-23

楼上大侠,所言为何啊?不懂。
重做表格?怎么做?没有思路啊

作者: sanz   发布时间: 2010-08-23