IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Développement SQL Server Discussion :

SQL Full-text Filter Daemon Launcher service, obligé de le redémarrer pour que l'index fonctionne !


Sujet :

Développement SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Mai 2017
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Mai 2017
    Messages : 4
    Par défaut SQL Full-text Filter Daemon Launcher service, obligé de le redémarrer pour que l'index fonctionne !
    Bonjour à tous,
    sur une version mssql 2016 gratuite j'ai activé la recherche intégrale.
    Mes index sont créés, mes requêtes avec les CONTAINS fonctionnent.
    Sauf que, sans que je puisse en identifier la raison, les index semblent ne plus se mettre à jour. Les requêtes ne prennent en compte que les anciennes valeurs.
    Si je relance le service "SQL Full-text Filter Daemon Launcher service" alors la situation revient à la normale.
    Une idée ?

    Merci.

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    22 010
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 22 010
    Billets dans le blog
    6
    Par défaut
    Tout dépend quel est le mode d'alimentation de vos index textuels... Sont-ils alimenté de façon :
    • au fil de l'eau
    • manuel avec journal de suivi
    • manuel intégral.



    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Mai 2017
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Mai 2017
    Messages : 4
    Par défaut
    Bonjour, et merci SQLPRO,
    j'ai essayé plusieurs configurations. J'ai par exemple ce matin eu un délai de mise à jour de l'index très lent. Lors de la première exécution de mon script quelques minutes après l'import des données l'index n'était pas à jour. J'ai fais un test 2h après l'index était chargé ( la requête c'est bien exécute).

    La table concernée n'est pas très grosse, 46000 avec 5 colonnes en nvarchar(500) que j'utilise dans l'index de recherche intégrale.

    Vu la taille il me semble peu probable qu'il faille plusieurs minutes à l'index pour se constituer.

    Ma table a une clé unique.

    Que me conseilles-tu?

    Merci

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Mai 2017
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Mai 2017
    Messages : 4
    Par défaut structure de ma table
    Bonjour,
    voici la description de ma table :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    CREATE TABLE JORFCONTENEUR
    (
        id_vdy int NOT NULL PRIMARY KEY
        ,ID nvarchar(50) NOT NULL
        ,idtxt nvarchar(50) NOT NULL
        ,titretxt nvarchar(500) NOT NULL
        ,niv1 nvarchar(50)
        ,id_vdy_NOMENTETIER_niv1 INTEGER
        ,niv2 nvarchar(50)
        ,id_vdy_NOMENTETIER_niv2 INTEGER
        ,niv3 nvarchar(50)
        ,id_vdy_NOMENTETIER_niv3 INTEGER
        ,niv4 nvarchar(50)
        ,id_vdy_NOMENTETIER_niv4 INTEGER
        ,niv5 nvarchar(50)
        ,id_vdy_NOMENTETIER_niv5 INTEGER
        ,NUM nvarchar(50)
        ,DATE_PUBLI nvarchar(50)
    );
    CREATE INDEX X_JORFCONTENEUR_JO ON JORFCONTENEUR (ID);
    CREATE INDEX X_JORFCONTENEUR_idtxt ON JORFCONTENEUR (idtxt);
    J'utilise actuellement cette requête pour créer mon index :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    CREATE FULLTEXT INDEX ON JORFCONTENEUR  
     (   
      niv1  
         Language 1036,  
      niv2  
         Language 1036, 
        niv3  
         Language 1036,  
      niv4  
         Language 1036,  
      titretxt  
         Language 1036      
     )   
      KEY INDEX PK_JORFCONTENEUR   
         ON jorfconteneur
         WITH CHANGE_TRACKING AUTO
    L'option CHANGE_TRACKING AUTO , de ce que j'ai compris, permet de lancer la mise à jour de l'index après chaque insert, update et delete sur la table.
    Il n'y a pas de délai pour exclusion, juste le temps de chargement ( qui ne doit pas prendre plus que quelques secondes) !

  5. #5
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Par défaut
    Bonjour,

    Avez-vous consulté les journaux d'indexation full-text ?
    Ils se trouvent par défaut dans le répertoire %ProgramFiles%\Microsoft SQL Server\MSSQL1[X].MSSQLSERVER\MSSQL\LOG, où [X] vaut :
    • 0 si vous êtes sous SQL Server 2008
    • 1 si vous êtes sous SQL Server 2012
    • 2 si vous êtes sous SQL Server 2014
    • 3 si vous êtes sous SQL Server 2016
    • 4 si vous êtes sous SQL Server 2017 (CTP)


    Le nom des fichiers suit la convention de nommage suivante :

    SQLFT<DatabaseID><FullTextCatalogID>.LOG[<n>]

    où :
    • <DatabaseID> s'obtient en interrogeant SELECT DB_ID('maBase')
    • <FullTextCatalogID> s'obtient à partir de la requête ci-dessous
    • <n> est l'indice du journal : celui qui n'a pas de <n> est le journal courant


    On peut obtenir l'état de la population d'un index à l'aide de la requête suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    SELECT		FC.fulltext_catalog_id
    		, FC.name AS catalog_name
    		, FC.path
    		, FC.is_importing
    		, FI.change_tracking_state_desc
    		, FULLTEXTCATALOGPROPERTY(FC.name, 'AccentSensitivity') AS accent_sensitivity
    		, FULLTEXTCATALOGPROPERTY(FC.name, 'IndexSize') AS index_size_MB
    		, FULLTEXTCATALOGPROPERTY(FC.name, 'ItemCount') AS item_count
    		, P.rows
    		, FULLTEXTCATALOGPROPERTY(FC.name, 'LogSize') AS log_size
    		, FULLTEXTCATALOGPROPERTY(FC.name, 'MergeStatus') AS merge_status
    		, CASE FULLTEXTCATALOGPROPERTY(FC.name, 'PopulateCompletionAge')
    			WHEN 0 THEN NULL
    			ELSE DATEADD(second, FULLTEXTCATALOGPROPERTY(FC.name, 'PopulateCompletionAge'), CAST('19900101' AS datetime))
    		END AS last_population_date_time
    		, CASE FULLTEXTCATALOGPROPERTY(FC.name, 'PopulateStatus')
    			WHEN 0 THEN 'Idle'
    			WHEN 1 THEN 'Full population in progress'
    			WHEN 2 THEN 'Paused'
    			WHEN 3 THEN 'Throttled'
    			WHEN 4 THEN 'Recovering'
    			WHEN 5 THEN 'Shutdown'
    			WHEN 6 THEN 'Incremental population in progress'
    			WHEN 7 THEN 'Building index'
    			WHEN 8 THEN 'Disk is full. Paused'
    			WHEN 9 THEN 'Change tracking'
    		END AS populate_status
    		, FULLTEXTCATALOGPROPERTY(FC.name, 'UniqueKeyCount') AS unique_key_count
    		, CASE FULLTEXTCATALOGPROPERTY(FC.name, 'ImportStatus')
    			WHEN 0 THEN 'The full-text catalog is not being imported.'
    			WHEN 1 THEN 'The full-text catalog is being imported.'
    		END AS import_status
    FROM		sys.fulltext_catalogs AS FC
    LEFT JOIN	sys.fulltext_indexes AS FI
    			ON FI.fulltext_catalog_id = FC.fulltext_catalog_id
    LEFT JOIN	sys.tables AS T
    			ON FI.object_id = T.object_id
    LEFT JOIN	sys.partitions AS P
    			ON P.object_id = T.object_id
    WHERE		P.index_id BETWEEN 0 AND 1
    Les DMV sys.dm_fts_outstanding_batches, sys.dm_fts_memory_buffers et sys.dm_fts_memory_pools pourront vous donner une idée de l'origine de cette lenteur. Elle peut être due :
    • à la quantité de CPU consommée par le démon fdhost.exe or même SQL Server (sqlservr.exe)
    • à la quantité de mémoire disponible pour gérer les tampons qui suppoortent l'indexation
    • à la queue disque : si les disques sont en charge au moment où on charge des données dans une table indexée en full-text, cela peut ralentir la population
    • à la fragmentation des index full-text ou de l'index cluster de la table
    • pire, à l'absence d'index cluster sur la table indexée full-text
    • éventuellement, aux statistiques, principalement celles de l'index cluster de la table


    Donc il y a pas mal de compteurs de performance à regarder.

    le temps de chargement ( qui ne doit pas prendre plus que quelques secondes) !
    A vérifier

    @++

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Mai 2017
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Mai 2017
    Messages : 4
    Par défaut Merci
    Bonjour,
    j'ai supprimé l'index et le catalogue associé et je l'ai recréé.
    Le système est stable depuis.

    Merci pour vos réponses.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [2008R2] Installation FULL TEXT FILTER
    Par big1 dans le forum Administration
    Réponses: 2
    Dernier message: 17/06/2015, 06h19
  2. sql server 2005 et Full-Text Catalog
    Par grapevine dans le forum Développement
    Réponses: 2
    Dernier message: 17/08/2011, 17h24
  3. SQL 2005: Full text et mot blacklisté
    Par krest dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 22/07/2008, 16h04
  4. Sql serveur 2005 et index full texte
    Par gueguenkevin dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 09/01/2008, 21h12

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo