表示 进入内容 138611387015677
« 先前的 10 新的记录 | 下一步 10 较早的记录 »
MySQL源码:索引相关的数据结构(后篇)

   前篇介绍了MySQL存储索引信息的基本数据结构。本篇将延续下去,介绍MySQL如何找到可以使用的索引,以及期间需要使用的主要数据结构。

   谁适合阅读: 本文不打算从High Level来介绍MySQL索引及其使用,相反是从MySQL源码对应的数据结构开始介绍。如果你了解MySQL索引的基本原理,还打算继续从源码的角度解决一些索引使用的问题,那么你适合参考本文,否则,打住,真的很枯燥:(。在可见的未来,作者还将介绍Range优化相关的数据结构等。

0. 概述

   本文介绍MySQL如何发现WHERE条件中的等值表达式,并通过分析这些等值表达式,找到可以使用的索引。在这个过程中,MySQL将递归的访问所有WHERE条件"谓词",并将等值表达式都存储到KEY_FIELD对象的数组中。

  …

[获取更多]
MySQL源码:索引相关的数据结构(前篇)

   本文将尝试介绍MySQL索引存储相关的数据结构。程序=数据结构+算法,了解数据结构,然后就可以进一步了解MySQL源码中如何使用索引,如何选择自己的执行计划。

1. MySQL如何描述某个数据表的索引

   MySQL使用TABLE对象来描述一个数据表,那么数据表的索引是如何描述,索引的统计信息又是如何存储的呢? 例如我们有如下数据表:

CREATE TABLE `users` (
  `id` int(11) NOT NULL,
  `nick` varchar(32) DEFAULT NULL,
  `reg_date` datetime DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `IND_NICK` (`nick`),
  KEY `IND_REGDATE` (`reg_date`)
) 

   该表有索引,PRIMARY KEY、IND_NICK、IND_REGDATE,我们来看看MySQL内部是如何存储这三个索引,以及如何使用这些索引的统计信息的。下图,描述了存储一个数据表索引的主要结构:

    …

[获取更多]
MySQL 5.6.21下载安装之安装篇(二)

 

mysql安装

 

1.1 Linux之下MySQL安装的三种方案的比较

具体内容参考这篇blog: http://blog.

【linux】  【mysql】  【innodb】  【Oracle】  【rpm】  【Server】  【Create】  【database】   …

[获取更多]
MySQL 5.6.21下载安装之下载篇(一)

 

        隐隐约约感觉到学数据库多多少少以后会涉及到mysql,好吧,那就趁着现在工作不是很忙的时间抽空来学学mysql吧,把这几天视频中学习到的知识和笔记整理了一下发出来大家共同学习,同时也以此来记录我的mysql学习历程。

【安全】  【mysql】  【性能】  【源码】  【数据库】  【性能监控】   …

[获取更多]
與mysqlbinlog可以點時間恢復例如恢復丟失的MySQL數據

Original post: http://anothermysqldba.blogspot.com/2014/11/recover-lost-mysql-data-with.html

備份...備份...備份...但當然..你還需要監控和測試這些備份通常否則他們可能是毫無價值的。 有你的MySQL binlogs啟用一定可以幫助你在緊急的時候也是如此。 MySQL的binlogs經常在關於MySQL複製引用,一個很好的理由,他們店裡所有的更改數據(查詢或事件的 …

[获取更多]
企业应用通用架构图

晚上把公司应用的架构结合之前研究的东西梳理了下,整理了一张架构规划图,贴在这里备份

下面是个人理解的做架构的几个要点: 1、系统安全 这是首要考虑的,以这张图为例,网络划分为3个区: a) DMZ区可以直接公网访问,也可以 与App Core区互通,但不能直接与DB Core区互通 (通...

【分布式】  【架构】  【服务器】  【mysql】  【性能】   …

[获取更多]
如何用 ajax 连接mysql数据库,并且获取从中返回的数据。ajax获取从mysql返回的数据。responseXML分别输出不同数据的方法。

开讲前,先说下网上,大部分的关于这方面的博文或者其他什么的,就我自己的感觉,第一说得不详细,第二语言不能很好的被初学者了解。 我这篇博文的标题之所以用了三句,是为了方便其他人好查找;       这里介绍的方法有什么用呢? 使用它,就可以无闪刷新页面,并且从数据库获取实时改变的数据反馈回界面,显示出来!是不是很爽,的确。

【php】  【服务器】  【mysql】  【函数】  【数据库】   …

[获取更多]
linux上mysql安装与卸载

以下步骤运行环境是centos6.5   1、查找以前是否装有mysql命令:rpm -qa|grep -i mysql2、删除mysql删除命令:rpm -e --nodeps 包名3、删除老版本mysql的开发头文件和库命令:rm -rf /usr/lib/mysql4.

【linux】  【mysql】  【函数】  【数据库】  【配置】  【rpm】  【grant】   …

[获取更多]
几招省磁盘空间的方法

   我们在工作中时常会遇到一些客户的TPS\QPS都不太高,但磁盘占用非常大,一旦单实例空间太大,像内存、网络、CPU以及备份都将增加相应的开销。可能仅仅是由于空间不满足使得我们不得不进行扩容,下面的方法提供给大家参考。有则改之无则加勉。

   1、表结构设计上

   1) 字符集是否遵循了最小化原则?(能用latin的就不用gbk。能用gbk的就不用utf8)

   2) 索引上是否有滥用?(根本不使用的字段建索引、不适合建索引的字段建索引、重复建索引或者不能很好的利用前缀索引等)

   3) 冗余字段是否太多?(各表中不用的或者字段冗余太多)

   4) 不正确的字段类型?(能用1个字节非要用几个字节,像枚举类、状态类比较常见)

   5) …

[获取更多]
mysql存储数据乱码

   mysql的字符集设置有多个层级,在mysql中存储中文,如果不能正确设置字符集,很容易出现数据乱码。今天就有一个用户反馈他数据库中的数据下午1点多开始出现了乱码。在这里,我分享下具体问题的排查过程,以及解决的办法。

   (1)  排除客户端设置导致的显示乱码

   如果用户设置的mysql character_set_client跟客户端显示的字符集不一致,很容易导致中文数据乱码。

   设置session字符集为utf8:set names utf8,设置客户端显示字符集为utf8,然后从表中select出有乱码的数据。

   

  …

[获取更多]
表示 进入内容 138611387015677
« 先前的 10 新的记录 | 下一步 10 较早的记录 »