
Mysql
Leon-Zheng
未来已来
展开
-
MySql Innodb 事务隔离级别
原文地址:https://dev.mysql.com/doc/refman/5.7/en/innodb-transaction-isolation-levels.html15.5.2.1 Transaction Isolation LevelsTransaction isolation is one of the foundations of d原创 2017-03-14 10:44:40 · 537 阅读 · 0 评论 -
Sql语句解析执行顺序
Sql有自己固定的语法解析和执行顺序,可能有时候一个条件的移动,就可以省去很多数据量的计算,既节约内存,又提高效率,所以还是有必要了解下内部的解析顺序。(8)SELECT (9)DISTINCT (1)FROM [left_table](3) JOIN (2)ON (4)WHERE (5)GROUP BY (6)WITH (7)HAVING (10)ORDER BY (11)原创 2017-09-16 16:07:55 · 323 阅读 · 0 评论 -
MySql常用命令整理
是否自动提交SHOW VARIABLES LIKE 'autocommit';、最大连接数SHOW VARIABLES LIKE 'max_connections';原创 2017-03-14 10:48:56 · 511 阅读 · 0 评论 -
Mysql 查找乱码数据
线上课程名称出现乱码数据,或者是"???"或者是类似 “修身是ä¸å›½ä¼ 统政æ”完全摸不着头脑的,想要先做一次数据修复,但是课程表有2,3万的数据,一条条看下来有没有乱码,还是很费时的。想通过sql来筛选出这些数据,可以借助sql的编码转换函数convert,使用latin1字符集来区分正常的和非正常的。SELECT Id,Title FROM Course WHE原创 2017-09-30 21:23:12 · 2916 阅读 · 0 评论 -
简单搭建Mysql主从同步
设置mysql主从同步centos01mysql从服务器 192.168.1.20centos02mysql主服务器 192.168.1.21安装主服务器并修改root密码[root@centos02 ~]# yum -y install mysql mysql-server[root@ce原创 2017-10-30 23:55:55 · 254 阅读 · 0 评论 -
使用sysbench对Mysql进行压力测试查询性能
安装[root@centos02 ~]# yum -y install mysql mysql-server启动[root@centos02 ~]# service mysqld start进入控制台,修改root密码[root@centos02 ~]# mysql -u rootmysql> SET PASSWORD FOR 'root'@'localhost原创 2017-10-31 00:00:04 · 756 阅读 · 0 评论 -
too many connections 分析
站点服务一早出现too many connections的异常,导致全站访问缓慢,甚至页面出不来。这个异常是从mysql那边获取不到连接导致,换句话说,连接已经被使用光了。赶紧找DBA看下。DBA使用 show processlist 查看,配置的max_connections 3000接近已经使用满了。接着分析发现:1、有慢查询占用着连接;2、有表损坏查不出数据于是针对这2种情况:原创 2017-10-31 16:40:13 · 551 阅读 · 0 评论 -
Mysql 慢查询参数
slow_query_log是否开启慢查询日志,ON表示开启,OFF表示关闭slow-query-log-file慢查询日志存储路径long_query_time当查询时间多于设定的阈值时,记录日志log_queries_not_using_indexes未使用索引的查询也被记录到慢查询日志中(可选项)log_outputFILE原创 2017-10-14 15:26:22 · 768 阅读 · 0 评论 -
Mysql timestamp整理
前几天线上一个接口请求异常,导致一个页面挂了。赶紧查了下日志,发现了这么一段 ERROR [http-bio-2206-exec-91] (SqlExceptionHelper.java:146) org.hibernate.engine.jdbc.spi.SqlExceptionHelper - Value '0000-00-00 00:00:00' can not be repre...原创 2017-06-08 21:57:11 · 684 阅读 · 0 评论 -
Mysqlsla慢查询报告的指标说明
总查询次数 (queries total), 去重后的sql数量 (unique)输出报表的内容排序(sorted by)最重大的慢sql统计信息, 包括 平均执行时间, 等待锁时间, 结果行的总数, 扫描的行总数.Count, sql的执行次数及占总的slow log数量的百分比.Time, 执行时间, 包括总时间, 平均时间, 最小, 最大时间, 时间占到总慢sql时间的百分比原创 2017-11-10 11:50:32 · 646 阅读 · 0 评论 -
Mysql Explain 解析之Type
explain 的结果中,每行共有这么几列:id、select_type、table、type、possible_keys、key、key_len、ref、rows、extra。一一来做分析。其中type表示了执行计划这步用到的搜索类型。type可以分为typedefineallFull Table Scan,全表扫描indexFul原创 2017-12-11 22:35:05 · 357 阅读 · 0 评论 -
Mysql 支持存储表情
今天移动端说服务端端无法存储表情字符,并且给了错误Caused by: java.sql.SQLException: Incorrect string value: '\xF0\x9F\x98\x80\xF0\x9F...' for column 'content' at row 1 at com.mysql.jdbc.SQLError.createSQLException(SQLErr原创 2017-07-31 12:59:57 · 317 阅读 · 0 评论 -
Mysql 索引的几个问题
1.B树与B+树的区别?B+树中只有叶子节点会带有指向记录的指针(ROWID),而B树则所有节点都带有,在内部节点出现的索引项不会再出现在叶子节点中。B+树中所有叶子节点都是通过指针连接在一起,而B树不会。2.MySQL中HASH索引和B+树索引的区别?哈希索引就是采用一定的哈希算法,把键值换算成新的哈希值,检索时不需要类似B+树那样从根节点到叶子节点逐级查找,只需一次哈希算法即可原创 2017-12-17 16:54:45 · 362 阅读 · 0 评论 -
MySql常用函数整理
字符串处理函数:SUBSTRING函数需要从大等于1开始,substring(field,1,10)原创 2017-09-16 14:57:25 · 291 阅读 · 0 评论 -
数据库范式、事务、锁学习
数据库三大范式:1、第一范式:保证每列的原子性,不能再拆分,比如联系方式,能拆成用户名和手机,就不要合在一起;2、第二范式:保证每列都和主键关联;3、第三范式:保证每列都和主键直接相关,而不是间接相关,这个涉及到拆分字段到其他表,主表只显示其他表主键信息。--------------------------数据库事务:1、原子性:要么都执行,要么都不执行;2、一致性原创 2017-08-13 15:17:47 · 378 阅读 · 0 评论 -
Mysql 批量修改表结构
今天有个小需求,需要把100张表的引擎,从InnoDB改为MYISAM。想到要手工执行,简直头大,还好有存储过程。可以利用存储过程来批量处理。-- 定义存储过程DELIMITER //CREATE PROCEDURE alter_table_enegine()BEGINDECLARE `@i` INT(11);DECLARE `@sqlstr` VARCHAR(2560);SET原创 2017-03-14 18:40:39 · 4784 阅读 · 0 评论 -
存储过程小记
DELIMITER $$CREATE PROCEDURE `PROC_UPDATELOGINADDRESS`() BEGIN DECLARE UserIdVar BIGINT(20); DECLARE OldUserIdVar BIGINT(20); DECLARE IPToIntVar BIGINT(20); DECLARE LastLoginI原创 2017-03-14 20:07:07 · 287 阅读 · 0 评论 -
事务隔离级别
原创 2017-03-19 18:29:15 · 219 阅读 · 0 评论 -
Too many active concurrent transactions
上个周六,有场竞赛,由于是系统推荐的,参与的人数较多,大概有1100人参与了正赛(正赛的意思是指在竞赛限定的时间范围参与并交卷;还有个补赛,在限定时间范围以外的)。结果出现了有用户无法提交正常的问题。查了下后台日志,发现在执行sql语句的时候,返回了数据库异常。这是包含2条插入语句的语句。Too many active concurrent transactions,字面意思,太多活动原创 2017-03-19 20:25:35 · 1119 阅读 · 0 评论 -
Hibernate对tinyint(1)的特殊处理
今天早上定义了一个字段类型为tinyint(1),因为这个字段的值只有0到3,4种情况,本意是减少数据库的存储,所以tinyint大小足够了。tinyint默认可存-127~127范围的数字(有符号)。当时采用tinyint(1),其实tinyint(2)之类的也是可以的,后面的数字是限制显示长度。当实际长度超出这个值时,也不会影响存储(如果有配置zerofill,那么不足的部分会左边补0)。原创 2017-04-17 12:59:13 · 1928 阅读 · 0 评论 -
Spring JdbcTemplate批量更新速度很慢的问题
由于一次要执行很多条插入语句(5w条),通常通过mysql写原生的插入语句会有类似的格式:insert into TableAAA(f1,f2) values (f11v,f21v),(f12v,f22v)...执行速度上是没有问题,大概5,6秒。在用JdbcTemplate的时候,就是用batchUpdate方法来写批量执行的语句:String sql = "insert原创 2017-05-06 02:31:29 · 14904 阅读 · 6 评论 -
Mysql 处理回车换行符
今天遇到一个需求,要从Mysql中查询一部分数据,然后将数据导出为CSV。这里使用的工具是SQLyog,很自然的使用工具自带的导出功能。导完后,打开csv文件,发现本来1行5列的数据出现了2种异常显示:1)有的笔记内容,那一列,变成了多列;2)有的笔记内容,那一行,变成了多行。关于这两种情况,查了下资料,找到原因:一列变多列,原因是CSV的列切分是依据英文逗号的,而原创 2017-04-24 20:09:51 · 9282 阅读 · 1 评论 -
Mysql 常见时间函数整理
这两天运营有需求,需要按照每周来统计表的数据。想想看如果自己统计每周数据,还要按周来查询,然后做union,有没有方便的函数呢?查了下,Mysql提供了week函数,可以方便的从日期中获取到周次,这样一来,便可以在分组时,按照week来分组,如group by week(create_time)。顺便整理了下,日常可能用到的一些时间函数,方便日后使用。SELECT -- 获取当前执行时间原创 2017-05-19 14:01:08 · 334 阅读 · 0 评论 -
Mysql 唯一索引冲突处理
Mysql插入时遇到唯一索引冲突,1、自动替换为新的值,可以用ON DUPLICATE KEY UPDATE xxx= VALUES(xxx)2、忽略插入是 insert ignore into3、删除旧记录,插入新记录是 replace into,如果这个记录id有在其他表有引用,那这种方式就不太适合原创 2017-07-21 12:32:58 · 2333 阅读 · 0 评论 -
mysql in 查询返回的结果不一定按照传进的顺序
mysql in 查询返回的结果不一定按照传进的顺序,造bug了...传进的范围记得排了下序,而这个语句却忘记了,记个备忘!原创 2017-07-17 21:18:35 · 524 阅读 · 0 评论 -
Mysql 查询区分大小写的2种方式
第一种:SELECT * FROM AAA T WHERE BINARY T.CONTENT LIKE '%S%'第二种:SELECT * FROM AAA T WHERE T.CONTENT COLLATE utf8_bin LIKE '%S%'之前一直不怎么清楚核对(Collate)是做什么用的,里面有各种 "_bin"或者"_ci"结尾的词,现在才知道,原来 bin(bi原创 2017-08-09 22:59:48 · 3655 阅读 · 0 评论 -
Mysql优化常用经验总结
适当使用查询缓存当查询结果确定不大于1行时,使用limit 1列有固定可选值时,使用enum而不是varchar为搜索字段建索引join表使用相同的类型,并建立索引使用Explain来优化语句避免select *永远为每张表设置id尽可能使用notnullprepared statements不用使用 order by rand()固定长度的表/越小的列原创 2018-01-07 16:47:53 · 377 阅读 · 0 评论