标签归档:mysql

MySQL Explain详解

转自 http://www.cnblogs.com/xuanzhi201111/p/4175635.html 在日常工作中,我们会有时会开慢查询去记录一些执行时间比较久的SQL语句,找出这些SQL语句并不意味着完事了,些时我们常常用到explain这个命令来查看一个这些SQL语句的执行计划,查看该SQL语句有没有使用上了索引,有没有做全表扫描,这都可以通过explain命令来查看。所以我们深入了解MySQL的基于开销的优化器,还可以获得很多可能被优化器考虑到的访问策略的细节,以及当运行SQL语句时哪种策略预计会被优化器采用。(QEP:sql生成一个执行计划query Execution plan) mysql> explain select * from servers; +—-+————-+———+——+—————+——+———+——+——+——-+ | id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra | +—-+————-+———+——+—————+——+———+——+——+——-+ | 1 | SIMPLE | servers | … 继续阅读

发表在 学习笔记 | 标签为 | 一条评论

Mysql主从同步备份实现

mysql主从方案主要作用: 读写分离,使数据库能支撑更大的并发。在报表中尤其重要。由于部分报表sql语句非常的慢,导致锁表,影响前台服务。如果前台使用master,报表使用slave,那么报表sql将不会造成前台锁,保证了前台速度。 发扬不同表引擎的优点。目前Myisam表的查询速度比innodb略快,而写入并发innodb比myIsam要好。那么,我们可以使用innodb作为master,处理高并发写入,使用master作为slave,接受查询。或在myisam slave中建立全文索引,解决innodb无全文索引的弱点。 热备,slave和master的数据“准实时”同步。 准备工作。先分别安装两台MYSQL。 配置MASTER [mysqld] port = 3306 socket = /tmp/mysql.sock basedir=/usr/local/mysql datadir=/home/mysqldata log-slow-queries=slow_query.txt log-bin=mysql-bin197 long_query_time=2 skip-locking skip-name-resolve skip-innodb bind-address=192.168.10.197 max_allowed_packet = 256M query_cache_size=256M max_connections=2000 max_connect_errors=10000 key_buffer_size=6000M read_buffer_size=32M read_rnd_buffer_size = 32M myisam_sort_buffer_size=256M tmp_table_size=512M old-passwords interactive_timeout=60 wait_timeout=60 connect_timeout=120 … 继续阅读

发表在 学习笔记 | 标签为 , | 留下评论

〔转〕MySQL远程访问权限,允许远程连接的开启

MySQL远程访问权限,允许远程连接的开启 1、登陆mysql数据库 mysql -u root -p 查看user表 mysql> use mysql; Database changed mysql> select host,user,password from user; +————–+——+——————————————-+ | host | user | password … 继续阅读

发表在 日记 | 标签为 | 4条评论

Mysql 中计算两日期的相差月数、日数等

返回日期或日期时间表达式datetime_expr1 和datetime_expr2the 之间的整数差。其结果的单位由interval 参数给出。interval 的法定值同TIMESTAMPADD()函数说明中所列出的相同,可以使用:FRAC_SECOND、SECOND、 MINUTE、 HOUR、 DAY、 WEEK、 MONTH、 QUARTER或 YEAR。 如: SELECT TIMESTAMPDIFF(MONTH,’2014-01-21′,NOW());

发表在 学习笔记 | 标签为 | 一条评论

MySQL 语句级避免重复插入—— Insert Select Not Exist

想要插入一条数据,要避免重复插入,又不想折腾两回数据库连接操作,可以参考如下办法。 INSERT INTO table(column1,column2,column3 …columnN) SELECT value1,value2,value3 …valueN FROM dual WHERE NOT EXISTS( SELECT * FROM table WHERE value = ? ); dual是为了构建查询语句而存在的表,Oracle中很常见,配合INSERT … SELECT构建成我们需要的表,并指定了数据项. EXISTS通过这个判断是否存在的函数,就免去了我们做IF-ELSE的冗繁操作

发表在 学习笔记 | 标签为 , | 留下评论