![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据库
_我走路带风
To save time is to lengthen life.
展开
-
使用倒序索引提升ORDER BY DESC性能
使用倒序索引(INDEX DESC),可以大幅提升带有order by desc子句的SQL语句性能。 一、场景1、表名:test_t,有一字段名为object_id2、总数据量:580000行,segment_size:72MB3、Where条件(Owner=’SYS’ and Object_id>50000)的行数:32472行4、SQL语句:select * fro...转载 2018-09-28 09:08:07 · 4418 阅读 · 0 评论 -
MySQL参数 之 innodb_buffer_pool_size
Innodb_buffer_pool_size《深入浅出MySQL》一文中这样描述Innodb_buffer_pool_size: 该参数定义了 InnoDB 存储引擎的表数据和索引数据的最大内存缓冲区大小。和 MyISAM 存储引擎不同,MyISAM 的 key_buffer_size只缓存索引键, 而 innodb_buffer_pool_size 却是同时为数据块和索引块做...原创 2019-03-26 18:59:16 · 15633 阅读 · 0 评论 -
tpcc-mysql 压力测试
若是想知道数据库或集群在业务环境中的性能,就需要压测。TPC-CTPC-C是TPC组织发布的一个测试规范,用来模拟测试复杂的在线事务处理系统(OLTP)。它的测试结果包括每分钟事务数(tpmC),以及每事务的成本(Price/tpmC)。TPC-C测试相比sysbench更能模拟真实压力。tpcc-mysqltpcc-mysql是percona开发出来的针对mysql的基于...原创 2019-03-27 19:00:13 · 1430 阅读 · 0 评论 -
MySQL 之 InnoDB缓冲池(Buffer Pool)体系结构
缓冲池体系结构图:缓冲池(Buffer Pool)是主缓存器的一个区域,用于缓存索引、行的数据、自适应哈希索引、插入缓存(Insert Buffer)、锁 还有其他的内部数据结构。Buffer Pool的大小是可以根据我们实际的需求进行更改,那么Buffer Pool的size取多少比较合适,在我的博客https://blog.csdn.net/qq_36652619/article/de...原创 2019-04-01 17:39:31 · 2254 阅读 · 0 评论 -
MySQL InnoDB存储引擎 之 锁
锁在实际的业务场景中,数据库上面的一个难点就是:一方面要最大程度利用数据库的并发访问,另一方面要保证用户的数据一致性,不能出现错乱的数据,于是锁的机制就诞生了。锁用于管理共享资源的并发访问,InnoDB引擎不但可以在数据表的行级别上面上锁,还可以在一些其他地方上锁,比如缓冲池中删除、添加LRU列表中的元素的时候为保证一致性需要上锁。Buffer Pool的LRU相关在我这篇里面有简单的介绍...原创 2019-04-08 20:40:07 · 279 阅读 · 0 评论 -
Mysql的varchar排序按照数字顺序
自己建表的时候,把一个字段类型创建为varchar(2) ,其实应该建为int(2)的。因为我只允许输出数字。这本来也没什么,无非就是占点空间,懒得改了。但是今天在后台发现排序有问题。于是,没办法,改之。下面简单说一下MySQL的varchar排序问题,引以为戒。下面,我从数据库里面以server_id排一下序,大家来看一下排序后的结果:selectserver_idfromcard...转载 2019-04-09 09:39:17 · 625 阅读 · 0 评论 -
MySQL 之 InnoDB引擎 Adaptive Hash index (自适应哈希索引)
官网解释Adaptive Hash index(自适应哈希索引)的特性使得InnoDB在不牺牲事务特性或可靠性的前提下,为缓冲池提供适当的工作负载和足够的内存的时候,能够表现的更像 in-memory(内存)数据库。该特性是通过变量innodb_adaptive_hash_index来使用的,可以说Adaptive Hash index不是传统意义的索引,可以理解为在Btree上的"索引"...原创 2019-04-26 21:20:04 · 3464 阅读 · 1 评论 -
MySQL 之 InnoDB引擎 Change Buffer
Change BufferChange Buffer是一种特殊的数据结构,缓存对二级索引页面的更改并且这些页面不在Buffer Pool中。缓存的changes可能由 Insert 、Delete 和 Update的结果导致。稍后在页面被其他读取操作加载到Buffer Pool的时候合并。Buffer Pool的研究在我的这篇里有:https://blog.csdn.net/qq_3665...原创 2019-04-22 21:00:08 · 8630 阅读 · 13 评论 -
MySQL 之 InnoDB引擎 Log Buffer
Log Buffer(日志缓冲区)是一块内存区域用来保存要写入磁盘上的日子文件的数据。 Log Buffer的大小由innodb_log_buffer_size变量定义。默认大小为16MB。Log Buffer的内容会定期刷到磁盘上。大的Log Buffer让较大事务能够运行,而无需在事务提交之前将redo log中的数据写入磁盘。因此,如果有DML操作并且会影响很多行这样是事务,增加日志缓冲...原创 2019-04-30 20:12:25 · 1774 阅读 · 2 评论 -
MySQL 之 InnoDB引擎 Transaction(事务)
为什么需要事务? 假设有这样一个场景,用户进行订单支付这一操作,实现的过程中我们需要像订单表中添加一条记录,并且向支付记录表中添加一条记录,我们没有开启事务,假设我们第一条SQL语句执行成功了,但是第二条SQL语句由于某原因(可能系统崩溃什么的)执行失败了,那么我们的订单表插入了一条记录,但是我们的支付记录表没有添加记录,用户在支付的记录里面找不到自己的记录,但是却有订单,这就造成了数据...原创 2019-05-14 19:02:50 · 1020 阅读 · 0 评论 -
MySQL 之 Sysbench 简单基准测试
基准测试基准测试的简单定义就是对于某个系统的一种硬件性能测试,它没有模拟真实的业务场景,使用工具包自己生成的数据对系统进行一个测试,它更care系统的硬件能力,例如,测试数据库实际的读写性能等。而对真实逻辑较少关注。觉得我讲的简单定义不专业的话,这里维基百科是这样介绍的:SysbenchSysbench可以用于测量数据库的性能和测试数据库所在服务器的性能,它是My...原创 2019-03-30 01:45:01 · 402 阅读 · 0 评论 -
有关mysql的innodb_flush_log_at_trx_commit参数
一、参数解释0:log buffer将每秒一次地写入log file中,并且log file的flush(刷到磁盘)操作同时进行。该模式下在事务提交的时候,不会主动触发写入磁盘的操作。1:每次事务提交时MySQL都会把log buffer的数据写入log file,并且flush(刷到磁盘)中去,该模式为系统默认。2:每次事务提交时MySQL都会把log buffer的数据写入log ...转载 2019-03-07 20:36:07 · 128 阅读 · 0 评论 -
Ubuntu中MySQL5.7设置utf8编码格式步骤
1.Ctrl+t打开终端2.输入mysql -u root -p 命令,进入MySQL输入 SHOW VARIABLES LIKE 'char%'; 查看MySQL编码,有两个不是utf83.在终端中输入 sudo gedit /etc/mysql/mysql.conf.d/mysqld.cnf 命令打开mysqld.cnf 文件,在lc-messages-dir = /us...转载 2018-10-29 18:15:00 · 398 阅读 · 0 评论 -
mysql插入emoji表情
UTF-8编码有可能是两个、三个、四个字节。Emoji表情是4个字节,而Mysql的utf8编码最多3个字节,所以数据插不进去。解决方案就是:将Mysql的编码从utf8转换成utf8mb4。 解决方案:1.修改配置文件。找到 Mysql 配置文件my.ini 或者是default.ini 配置文件。修改或者添加一下内容。2. 修改环境变量。以root 身份登录 My...原创 2018-10-29 19:16:50 · 1524 阅读 · 0 评论 -
centos6.8下安装redis,make test失败,解决方法
错误信息解决办法,安装tcl:sudo wget http://downloads.sourceforge.net/tcl/tcl8.6.1-src.tar.gz sudo tar -zxvf -C /usr/localcd /usr/local/tcl8.6.1/unixsudo ./configuresudo makesudo make install安装完...转载 2019-01-14 23:01:51 · 1513 阅读 · 0 评论 -
事务update会锁表吗?
两种情况:1.带索引 2.不带索引前提介绍:方式:采用命令行的方式来模拟1.mysq由于默认是开启自动提交事务,所以首先得查看自己当前的数据库是否开启了自动提交事务。命令:select @@autocommit;结果如下:+--------------+| @@autocommit |+--------------+| 0 |+-----...转载 2019-02-21 14:31:59 · 8461 阅读 · 0 评论 -
查看mysql数据库连接数、并发数相关信息。
1.mysql> show status like 'Threads%';+-------------------+-------+| Variable_name| Value |+-------------------+-------+| Threads_cached| 58|| Threads_connected | 57|###这个数值...转载 2019-03-07 10:12:28 · 434 阅读 · 0 评论 -
[MySQL高级] EXPLAIN用法和结果分析
1. EXPLAIN简介使用EXPLAIN关键字可以模拟优化器执行SQL查询语句,从而知道MySQL是如何处理你的SQL语句的。分析你的查询语句或是表结构的性能瓶颈。➤通过EXPLAIN,我们可以分析出以下结果:表的读取顺序 数据读取操作的操作类型 哪些索引可以使用 哪些索引被实际使用 表之间的引用 每张表有多少行被优化器查询➤使用方式如下:EXPLAIN ...转载 2019-03-04 16:32:25 · 234 阅读 · 0 评论 -
MySQL的优化点总结---通过计算多种状态的百分比看MySQL的性能情况
1 读写比例:show global status like 'com_select'; 获得服务器启动到目前查询操作执行的次数;show global status like 'com_insert'; 获得服务器启动到目前插入操作执行的次数;show global status like 'com_update'; 获得服务器启动到目前更新操作执行的次数;show global...转载 2019-03-07 10:40:01 · 138 阅读 · 0 评论 -
优化insert语句(INSERT DELAYED)
如果不同客户插入很多行,可以通过使用insert delayed语句得到更高的速度,数据都被放在内存队列中更改INSERT INTO为 INSERT DELAYED INTO说明: INSERT DELAYED INTO,是客户端提交数据给MySQL,MySQL返回OK状态给客户端。而这是并不是已经将数据插入表,而是存储在内存里面等待排队。当mysql有空余时,再插入。 这样的好处是,...原创 2019-03-07 18:18:45 · 4350 阅读 · 0 评论 -
Innode内存优化 (INNODB_BUFFER_POOL_SIZE)
1.innodb_buffer_pool_sizeinnodb_buffer_pool_size决定InnoDB存储引擎表数据和索引数据的最大缓存区大小。在保证操作系统及其他程序有足够的内存可用的情况下,innodb_buffer_pool_size的值越大,缓存命中率越高,访问InnoDB表需要的磁盘I/O就越少,性能也就越高。InnoDB缓冲池实际上用于多个目的,它用来:* 数...原创 2019-03-07 19:53:40 · 1016 阅读 · 0 评论 -
navicat设置表中字段唯一约束
首先进入设计表:如下界面点击索引:如下设置:栏位选择想要唯一约束的字段点击保存即可原创 2019-06-27 14:46:21 · 16587 阅读 · 1 评论