随笔分类 - mysql
摘要:索引起码用到range类型,不然查询效率会很差。 MySQL覆盖索引,也叫包含索引,通过查看explain中extra列是否有using index判断是否使用覆盖索引。因为覆盖索引要存储索引列的值,所以哈希索引,空间索引,全文索引都不存储索引列的值,MySQL只能使用B-Tree索引做覆盖索引。如
阅读全文
摘要:在组合索引中,除了使用between匹配外,采用<,>,like等进行匹配都会导致后面的列无法走索引,因为通过以上方式匹配到的数据是不可知,可以把范围查询放到最后面。 但是可以通过ICP技术(版本5.6+支持),即索引过滤,进行二级索引(explain中值是range,ref,eq_ref或者ref
阅读全文
摘要:pt-ioprofile 是 pt-tools 中的一款性能分析工具,可以监听 MySQL 进程,输出 IO 操作的次数/总时间/平均时间。其原理如下:pt-ioprofile 用 strace 监听 MySQL 的系统调用,筛选其中与 IO 相关的系统调用,进行统计。同时 pt-ioprofile
阅读全文
摘要:pt-ioprofile 是 pt-tools 中的一款性能分析工具,可以监听 MySQL 进程,输出 IO 操作的次数/总时间/平均时间。其原理如下:pt-ioprofile 用 strace 监听 MySQL 的系统调用,筛选其中与 IO 相关的系统调用,进行统计。同时 pt-ioprofile
阅读全文
摘要:redo log的大小是固定的,在mysql中可以通过修改配置参数innodb_log_files_in_group和innodb_log_file_size配置日志文件数量和每个日志文件大小,redo log采用循环写的方式记录,当写到结尾时,会回到开头循环写日志。redo log通常是物理日志,
阅读全文
摘要:索引是一种用于快速查询行的数据结构,就像一本书的目录就是一个索引,如果想在一本书中找到某个主题,一般会先找到对应页码。在mysql中,存储引擎用类似的方法使用索引,先在索引中找到对应值,然后根据匹配的索引记录找到对应的行。 我们首先了解一下索引的几种类型和索引的结构。 索引类型 B树 大多数存储引擎
阅读全文
摘要:MySQL服务器配置,innodb_buffer_pool_size缓冲池,设置为服务器内存的75%-80%,innodb_log_buffer_size设置日子文件大小,如果太小影响写操作,如果太大影响数据恢复,innodb_log_buffer_size日子缓冲区大小,一般不需要太大,16M以内
阅读全文
摘要:网上写MySQL架构的文章比较多,写InnoDB架构的文章比较少,今天简单说说InnoDB架构。 画外音:一分钟,一幅图,秒懂。 作者:58沈剑 MySQL简要架构是怎么样的? MySQL整体分为三层: (1)客户端,是各种编程语言的connector; (2)MySQL服务,内部包含各种组件,实现
阅读全文
摘要:可能你从未看到过这样的一篇集中火力式的把mysql参数列了这么全的文章,很有兴曾参与过超3万并发的18~19年的数轮520、618、双11、双12保卫战。因此这一篇是汇集了最精华和实战的内容把mysql所有的参数列在这边供大家参考。并且以(64c cpu,128gb内存)的mysql cpu和内存来
阅读全文
摘要:innodb以前不支持高并发,在高并发下就是悲剧,全部卡在mutex(缓冲池mutex)上,现在通过线程调度器控制线程怎么进入内核访问数据,参数为innodb_thread_concurrency,它有计算公式:CPU数量*磁盘数量*2。 如果无法进入内核会休眠innodb_thread_sleep
阅读全文
摘要:如果查询在from子句中包含子查询,MySQL会执行子查询,将结果放在一个临时表中,然后完成外层查询的优化,它必须在外层查询优化前处理;所有类似的子查询,explain也必须这样做,意味着如果子查询开销较大,或使用临时表,服务器开销会比较大。这时候可以使用join连接查询代替子查询。 explain
阅读全文
摘要:show profiles查看所有查询执行时间,通过show profile for query ID查看具体某个查询执行时间,一般耗费在sending data上面。timestamp只使用datetime一般的存储。可以用bigint代替decimal,这样避免浮点存储计算不精确和decimal
阅读全文
摘要:方法一:like SELECT * FROM 表名 WHERE 字段名 like "%字符%";方法二:find_in_set() 利用mysql 字符串函数 find_in_set(); SELECT * FROM users WHERE find_in_set('字符', 字段名);mysql有
阅读全文
摘要:登录mysql,在test数据库中建立一个表: 在表shoufei增加数据: 在表中,查询xiangmu字段,在查询结果组成一个字符串: 在字符串有重复的值,把重复的值过滤 在查询项目组成的字符串时,定义间隔符号 把字符串的字段的值升序排序(asc ,desc): 注意: group_concat字
阅读全文
摘要:一、group by 当我们执行 group by 操作在没有合适的索引可用的时候,通常先扫描整个表提取数据并创建一个临时表,然后按照 group by 指定的列进行排序。在这个临时表里面,对于每一个 group 的数据行来说是连续在一起的。完成排序之后,就可以发现所有的 groups,并可以执行聚
阅读全文
摘要:判断字段是否存在: 判断索引是否存在:
阅读全文
摘要:drop procedure count_points; create procedure count_points() begin declare n_Latitude double; declare n_Longitude double; declare isExist int; declare countExist int default 0; de...
阅读全文
摘要:1、备份表结构 create table table_bak like table_name; 2、备份表数据 insert into table_bak select * from table_name; 3、删除原来主键字段(如id) alter table table_name drop id
阅读全文
摘要:前言 数据库存储引擎是数据库底层软件组织,数据库管理系统(DBMS)使用数据引擎进行创建、查询、更新和删除数据。不同的存储引擎提供不同的存储机制、索引技巧、锁定水平等功能,使用不同的存储引擎,还可以 获得特定的功能。现在许多不同的数据库管理系统都支持多种不同的数据引擎。MySQL的核心就是存储引擎。
阅读全文
摘要:INSERT(t.TABLE1,4,6,'*') REPLACE ( PHONE, SUBSTR(PHONE, 4, 6), 'XXXX' )-- 隐藏从第四位开始的6个字符,包括第四个字符,替换成X
阅读全文