07 2018 档案

mysql 开发进阶篇系列 11 锁问题 (恢复和复制的需要,对锁机制的影响)
摘要:1. 恢复和复制的需要,对innodb锁机制的影响 mysql 通过binlog文件对增删改等更新数据的sql语句,实现数据库的恢复和主从复制。mysql的恢复机制(复制其实就是在slave mysql不断做基于binglog的恢复)特点有如下: (1) mysql 的恢复是sql语句级的,也就是重 阅读全文

posted @ 2018-07-31 20:18 花阴偷移 阅读(423) 评论(0) 推荐(0)

sql server 日志文件结构及误操作数据找回
摘要:一. 概述 在sql server 里有数据文件.mdf和日志文件.ldf,日志文件是sqlserver数据库的另一个重要组成部分,日志文件记录了所有事务以及每个事务对数据库所做的修改。为了提高数据库的性能, sqlserver 数据是缓存在内存里,并没有实时写入到磁盘,直到数据库出现检查点(che 阅读全文

posted @ 2018-07-30 16:30 花阴偷移 阅读(2877) 评论(0) 推荐(1)

mysql 开发进阶篇系列 10 锁问题 (使用“索引或间隙锁”的锁冲突)
摘要:1.使用“相同索引键值”的冲突 由于mysql 的行锁是针对索引加的锁,不是针对记录加的锁,所以虽然是访问不同行的记录,但如果是使用相同的索引键,是会出现锁冲突的。设计时要注意 例如:city表city_id字段有索引,Cityname字段没有索引: 会话1 会话2 SET autocommit=0 阅读全文

posted @ 2018-07-30 14:20 花阴偷移 阅读(1317) 评论(0) 推荐(0)

sql server 索引阐述系列八 统计信息
摘要:一.概述 sql server在快速查询值时只有索引还不够,还需要知道操作要处理的数据量有多少,从而估算出复杂度,选择一个代价小的执行计划,这样sql server就知道了数据的分布情况。索引的统计值信息,还内置策略用来在没有索引的属性列上创建统计值。在有索引和没有索引的属性列上统计值信息会被自动维 阅读全文

posted @ 2018-07-30 09:54 花阴偷移 阅读(850) 评论(0) 推荐(0)

sql server 索引阐述系列七 索引填充因子与碎片
摘要:一.概述 索引填充因子作用:提供填充因子选项是为了优化索引数据存储和性能。 当创建或重新生成索引时,填充因子的值可确定每个叶级页上要填充数据的空间百分比,以便在每一页上保留一些剩余存储空间作为以后扩展索引的可用空间,例如:指定填充因子的值为 80 表示每个叶级页上将有 20% 的空间保留为空,以便随 阅读全文

posted @ 2018-07-27 11:23 花阴偷移 阅读(848) 评论(0) 推荐(0)

mysql 开发进阶篇系列 9 锁问题 (Innodb 行锁实现方式)重点篇
摘要:一.概述 Innodb 行锁是通过给索引上的"索引项"加锁来实现的。这一点与(oracle,sql server)不同后者是通过在数据块中对相应的数据行加锁。这意味着只有通过索引条件检索数据,innodb才使用行级锁,否则 innodb将使用表锁。 在实际应用中,特别要注意innodb行锁的这一特性 阅读全文

posted @ 2018-07-27 10:30 花阴偷移 阅读(604) 评论(0) 推荐(0)

mysql 开发进阶篇系列 8 锁问题 (共享锁与排它锁演示)
摘要:1 .innodb 共享锁(lock in share mode)演示 SET autocommit=0是指:当前session禁用自动提交事务,需要显示 commit 才能提交事务。默认是autocommit=1 隐式提交事务。如果想控制何时提交或回滚,常用是START TRANSACTION(或 阅读全文

posted @ 2018-07-26 18:33 花阴偷移 阅读(465) 评论(0) 推荐(0)

sql server 索引阐述系列六 碎片查看与解决方案
摘要:一 . dm_db_index_physical_stats 重要字段说明 1.1 内部碎片:是avg_page_space_used_in_percent字段。是指页的填充度,为了使磁盘使用状况达到最优,对于没有很多随机插入的索引,此值应接近 100%。 但是,对于具有很多随机插入且页很满的索引, 阅读全文

posted @ 2018-07-26 18:14 花阴偷移 阅读(1284) 评论(0) 推荐(0)

sql server 索引阐述系列五 索引参数与碎片
摘要:1.1 Filefactor参数 使用Filefactor可以对索引的每个叶子分页存储保留一些空间。对于聚集索引,叶级别包含了数据,使用Filefactor来控制表的保留空间,通过预留的空间,避免了新的数据按顺序插入时,需腾出空位而进行分页分隔。 Filefactor设置生效注意,只有在创建索引时才 阅读全文

posted @ 2018-07-25 18:00 花阴偷移 阅读(975) 评论(0) 推荐(1)

mysql 开发进阶篇系列 7 锁问题(innodb锁争用情况及锁模式)
摘要:1 .获取innodb行锁争用情况 1.1 通过检查innodb_row_lock状态变量来分析系统上的行锁的争夺情况 通过innodb_row_lock_waits 和 innodb_row_lock_avg 的值来判断行锁争用情况,值高意味着争用比较严重。 1.2 通过检查 innodb mon 阅读全文

posted @ 2018-07-24 16:36 花阴偷移 阅读(636) 评论(0) 推荐(0)

sql server 性能调优之 资源等待SOS_SCHEDULER_YIELD
摘要:一.概念 SOS_SCHEDULER_YIELD等待类型是一个任务自愿放弃当前的资源占用,让给其他任务使用。 这个等待类型与CPU有直接关系,与内存与也有间接关系,与CPU有关系是因为在sql server里是通过任务调度SCHEDULER来关联CPU。 通过SCHEDULER下的Worker线程来 阅读全文

posted @ 2018-07-24 09:46 花阴偷移 阅读(1981) 评论(2) 推荐(0)

mysql 开发进阶篇系列 6 锁问题(事务与隔离级别介绍)
摘要:一.概述 在数据库中,数据是属于共享资源,为了保证并发访问的一致性,有效性,产生了锁。接下来重点讨论mysql锁机制的特点,常见的锁问题,以及解决mysql锁问题的一些方法或建议。 相比其他数据库,mysql 锁机制比较简单,显著的特点是:不同的存储引擎支持不同的锁机制。在innodb中支持行锁和表 阅读全文

posted @ 2018-07-23 17:28 花阴偷移 阅读(525) 评论(1) 推荐(0)

mysql 开发进阶篇系列 5 SQL 优化(表优化)
摘要:一. 使用sql提示 sql 提示(sql hint)是优化数据库的一个重要手段, 是在sql语句中加入一些人为的提示来达到优化操作的目的。 1.1 use index 在查询语句中表名的后面,添加use index 强制mysql使用该索引,不考虑其它索引。 1.2 ignore index 在查 阅读全文

posted @ 2018-07-23 11:57 花阴偷移 阅读(547) 评论(0) 推荐(0)

mysql 开发进阶篇系列 4 SQL 优化(各种优化方法点)
摘要:1 通过handler_read 查看索引使用情况 如果索引经常被用到 那么handler_read_key的值将很高,这个值代表了一个行被索引值读的次数, 很低的值表明增加索引得到的性能改善不高,索引并不经常使用。 handler_read_rnd_next 的值高 则意味着查询运行低效,应该建立 阅读全文

posted @ 2018-07-20 17:40 花阴偷移 阅读(502) 评论(0) 推荐(0)

sql server 性能调优之 资源等待PAGELATCH
摘要:一.概述 在前几章介绍过 sql server 性能调优资源等待之PAGEIOLATCH,PAGEIOLATCH是出现在sql server要和磁盘作交互的时候,所以加个IO两个字。这次来介绍PAGELATCH。PAGELATCH类型是sqlserver在缓冲池里的数据页面上经常加的另一类latch 阅读全文

posted @ 2018-07-20 10:27 花阴偷移 阅读(1625) 评论(0) 推荐(1)

mysql 开发进阶篇系列 3 SQL 优化(索引使用方法)
摘要:一. 本章介绍mysql中的索引的分类,存储,使用方法的介绍 1. 索引的存储分类 MyISAM存储引擎的表的数据和索引是自动分开存储的,各自是独立的一个文件, innodb 存储引擎的表的数据和索引是存储在同一个表空间里面,可以有多个文件组成。 MyISAM和Innodb存储引擎都支持btree索 阅读全文

posted @ 2018-07-19 13:48 花阴偷移 阅读(374) 评论(0) 推荐(0)

mysql 开发进阶篇系列 2 SQL优化(explain分析)
摘要:接着上一篇sql优化来说 1. 定位执行效率较低的sql 语句 通过两种方式可以定位出效率较低的sql 语句。 (1) 通过上篇讲的慢日志定位,在mysqld里写一个包含所有执行时间超过 long_query_time秒的sql语句的日志文件,后面具体介绍。 (2) 通过show processli 阅读全文

posted @ 2018-07-18 14:07 花阴偷移 阅读(539) 评论(0) 推荐(0)

mysql 开发进阶篇系列 1 SQL优化(show status命令)
摘要:一.概述 随着上线后,数据越来越多,很多sql语句开始显露出性能问题,本章介绍在mysql中优化sql语句的方法。 1. 通过show status 命令了解各种sql的执行频率 通过show [session | global] 命令可以提供服务器状态信息,也可以在操作系统上使用mysqladmi 阅读全文

posted @ 2018-07-17 15:09 花阴偷移 阅读(736) 评论(0) 推荐(0)

sql server 性能调优之 资源等待 LCk
摘要:一. 概述 这次介绍实例级别资源等待LCK类型锁的等待时间,关于LCK锁的介绍可参考 “sql server 锁与事务拨云见日”。下面还是使用sys.dm_os_wait_stats 来查看,并找出耗时最高的LOK锁。 select wait_type, waiting_tasks_count, w 阅读全文

posted @ 2018-07-17 09:27 花阴偷移 阅读(6704) 评论(0) 推荐(1)

mysql 开发基础系列22 SQL Model(带迁移事项)
摘要:一.概述 与其它数据库不同,mysql 可以运行不同的sql model 下, sql model 定义了mysql应用支持的sql语法,数据校验等,这样更容易在不同的环境中使用mysql。 sql model 常用来解决下面几类问题: (1) 通过设置sql mode, 可以完成不同严格程度的数据 阅读全文

posted @ 2018-07-16 18:06 花阴偷移 阅读(1078) 评论(0) 推荐(0)

mysql 开发基础系列21 事务控制和锁定语句(下)
摘要:1. 隐含的执行unlock tables 如果在锁表期间,用start transaction命令来开始一个新事务,会造成一个隐含的unlock tables 被执行,如下所示: 会话1 会话2 SELECT * FROM country WHERE country='德国'; 记录为空 SELE 阅读全文

posted @ 2018-07-16 11:01 花阴偷移 阅读(325) 评论(0) 推荐(0)

mysql 开发基础系列20 事务控制和锁定语句(上)
摘要:一.概述 在mysql 里不同存储引擎有不同的锁,默认情况下,表锁和行锁都是自动获得的,不需要额外的命令, 有的情况下,用户需要明确地进行锁表或者进行事务的控制,以便确保整个事务的完整性。这样就需要使用事务控制和锁定语句来完成。 特点 myisam innodb memory merge ndb 事 阅读全文

posted @ 2018-07-12 16:22 花阴偷移 阅读(363) 评论(0) 推荐(1)

sql server 性能调优之 资源等待 CXPACKET
摘要:一.概述 CXPACKET是指:线程正在等待彼此完成并行处理。什么意思呢? 当sql server发现一条指令复杂时,会决定用多个线程并行来执行,由于某些并行线程已完成工作,在等待其它并行线程来同步,这种等待就叫CXPACKET。 为什么会有并行线程呢? 因为在sql server 里有个任务调度S 阅读全文

posted @ 2018-07-12 11:13 花阴偷移 阅读(2789) 评论(17) 推荐(4)

mysql 开发基础系列19 触发器
摘要:触发器是与表有关的数据库对象,触发器只能是针对创建的永久表,而不能是临时表。 1.1 创建触发器 -- 语法: CREATE TRIGGER trigger_name trigger_time trigger_event ON tbl_name FOR EACH ROW trigger_stmt t 阅读全文

posted @ 2018-07-12 09:50 花阴偷移 阅读(272) 评论(0) 推荐(1)

mysql 开发基础系列18 存储过程和函数(下)
摘要:1. 光标的使用(游标) 在存储过程和函数中可以使用光标对结果集进行循环的处理,光标使用包括光标的声明,open ,fetch,close。 下面在存储过程中使用一个光标, 这个举例中光标里的逻辑不重要, 重点在于如何使用光标: SELECT city_id FROM test.city DELIM 阅读全文

posted @ 2018-07-11 13:59 花阴偷移 阅读(338) 评论(0) 推荐(0)

mysql 开发基础系列17 存储过程和函数(上)
摘要:一. 概述 存储过程和函数是事先经过编译并存储在数据库中的一段sql语句集合,可以简化应用开发人员的很多工作,减少数据在数据库与应用服务器之间的传输,提高数据处理效率是有好处的。存储过程和函数的区别在于函数必须有返回值,存储过程的参数可以使用in,out ,inout类型,而函数参数只能是in类型。 阅读全文

posted @ 2018-07-10 16:40 花阴偷移 阅读(364) 评论(0) 推荐(0)

sql server 性能调优之 资源等待PAGEIOLATCH
摘要:一.概念 在介绍资源等待PAGEIOLATCH之前,先来了解下从实例级别来分析的各种资源等待的dmv视图sys.dm_os_wait_stats。它是返回执行的线程所遇到的所有等待的相关信息,该视图是从一个实际级别来分析的各种等待,它包括200多种类型的等待,需要关注的包括PageIoLatch(磁 阅读全文

posted @ 2018-07-10 10:29 花阴偷移 阅读(3929) 评论(0) 推荐(0)

mysql 开发基础系列16 视图
摘要:一. 什么是视图 视图是一种虚拟存在的表,行和列数据来自定义视图的查询中使用的表,并且是在使用视图时动态生成的。优势有: 简单: 使用视图的用户完全不需要关心后面对应的表的结构,关联条件,筛选条件。 安全:使用视图的用户只能访问他们被允许查询的结果集。 数据独立: 源表增加列对视图没有影响,源表修改 阅读全文

posted @ 2018-07-09 17:16 花阴偷移 阅读(275) 评论(0) 推荐(0)

mysql 开发基础系列15 索引的设计和使用
摘要:一.概述 所有mysql 列类型都可以被索引,是提高select查询性能的最佳方法。 根据存储引擎可以定义每个表的最大索引数和最大索引长度,每种引擎对每个表至少支持16个索引,总索引长度至少为256字节。 myisam和innodb引擎的表默认是btree索引,支持前缀索引,前缀索引长度跟存储引擎相 阅读全文

posted @ 2018-07-09 14:25 花阴偷移 阅读(490) 评论(0) 推荐(0)

sql server 性能调优之 当前用户请求分析 (1)
摘要:一. 概述 在生产数据库运行期间,有时我们需要查看当前用户会话状态或者是说数据库当前是否运行良好, 应用的场景比如:当运行的应用系统响应突然变慢时需要分析数据库的、或想分析当前的数据库是否繁忙,是否有长时间的等待, 又或者执行一个sql的回滚状态查看,想手动kill掉一个会话时 等等。都需要从当前的 阅读全文

posted @ 2018-07-09 11:02 花阴偷移 阅读(1731) 评论(0) 推荐(2)

sql server 性能调优之 CPU消耗最大资源分析1 (自sqlserver服务启动以后)
摘要:一. 概述 上次在介绍性能调优中讲到了I/O的开销查看及维护,这次介绍CPU的开销及维护, 在调优方面是可以从多个维度去发现问题如I/O,CPU, 内存,锁等,不管从哪个维度去解决,都能达到调优的效果,因为sql server系统作为一个整体性,它都是紧密相连的,例如:解决了sql语句中I/O开销较 阅读全文

posted @ 2018-07-06 17:12 花阴偷移 阅读(1791) 评论(3) 推荐(3)

mysql 开发基础系列14 字符集
摘要:字符集是一套文字符号及其编码,比较规则的集合。第一个字符集是ascll(american standard code for information interchange)。 1. 选择合适的字符集 对于数据库来说,字符集很重要,因为数据库存储的数据大部分是各种文字,字符集对数据库的存储,处理性能 阅读全文

posted @ 2018-07-06 15:52 花阴偷移 阅读(493) 评论(0) 推荐(0)

mysql 开发基础系列13 选择合适的数据类型(下)
摘要:一. BloB和Text 1. 合成索引 合成索引可以提高大文本字段BLOB和Text的查询性能, 合成索引是在表中增加一个字段存放散列值,这种技术只能用于精确匹配的查询,可以使用md5()或sha1,crc23() 来生成散列值, 数值型散列值可以提高存储效率 。下面演示下 -- hash_val 阅读全文

posted @ 2018-07-06 11:07 花阴偷移 阅读(277) 评论(0) 推荐(0)

mysql 开发基础系列12 选择合适的数据类型(上)
摘要:一. char 与varchar比较 在上图的最后一行的值只适用在"非严格模式",关于严格模式后面讲到。在“开发基础系列4“ 中讲到CHAR 列删除了尾部的空格。由于char是固定长度,所以字的处理速度比varchar快,但也浪费存储空间,随着mysql 的不断升级,varchar数据类型的性能也在 阅读全文

posted @ 2018-07-05 16:50 花阴偷移 阅读(356) 评论(0) 推荐(0)

mysql 开发基础系列11 存储引擎memory和merge介绍
摘要:一. memory存储引擎 memoery存储引擎是在内存中来创建表,每个memory表只实际对应一个磁盘文件格式是.frm. 该引擎的表访问非常得快,因为数据是放在内存中,且默认是hash索引,但服务关闭,表中的数据就会丢失掉。 -- 下面创建一个memory表,并从city表获得记录 CREAT 阅读全文

posted @ 2018-07-04 17:31 花阴偷移 阅读(530) 评论(0) 推荐(0)

mysql 开发基础系列10 存储引擎 InnoDB 介绍
摘要:一. 概述: InnoDB存储引擎提供了具有提交,回滚,和崩溃恢复能力的事务安全,对比MYISAM 的存储引擎,InnoDB写的处理效率差一些并且会占用更多的磁盘空间以保留数据和索引。它的特点有如下: 1. 自动增长列特点 (AUTO_INCREMENT) InnoDB表的自动增长列可以手工插入,但 阅读全文

posted @ 2018-07-04 10:07 花阴偷移 阅读(494) 评论(0) 推荐(1)

sql server 性能调优之 逻辑内存消耗最大资源分析1 (自sqlserver服务启动以后)
摘要:一.概述 IO 内存是sql server最重要的资源,数据从磁盘加载到内存,再从内存中缓存,输出到应用端,在sql server 内存初探中有介绍。在明白了sqlserver内存原理后,就能更好的分析I/O开销,从而提升数据库的整体性能。 在生产环境下数据库的sqlserver服务启动后一个星期, 阅读全文

posted @ 2018-07-03 13:46 花阴偷移 阅读(1486) 评论(2) 推荐(1)

mysql 开发基础系列9 存储引擎 MyISAM 介绍
摘要:MyISAM是mysql 默认存储引擎,它不支持事务,外键。但访问速度快,对事务完整性没有要求或者以select,insert 为主的应用基本上都可以使用这个引擎。每个MyISAM在磁盘上存储成3个文件,文件名都和表名相同,扩展分别是:.frm(存储表定义).MYD(MYdata 存储数据).MYI 阅读全文

posted @ 2018-07-02 16:31 花阴偷移 阅读(542) 评论(0) 推荐(2)

mysql 开发基础系列8 表的存储引擎
摘要:一. 表的存储引擎 1. 概述 插件式存储引擎是mysql数据库最重要的特性之一, 用户可以根据应用的需要选择如何存储和索引数据,是否使用事务等。在mysql 5.0里支持的引擎包括: MyISAM,InnoDB,BDB,Memory,Merge,Example,NDB Cluster, Archi 阅读全文

posted @ 2018-07-02 13:54 花阴偷移 阅读(379) 评论(0) 推荐(0)

导航